一. 前言:
本系列文章,博主已经给大家介绍了几种python的django架构应用实例,包括web用户注册登陆系统,博客系统,用户视频上传等等,相信有看过博主上传过的实例的童鞋应该会对django简洁实用的代码架构所吸引,今天,我们就来分享下Django架构前后端数据是如何进行交互的。
二. 数据交互:
1.概念:在分析数据交互前,首先理解几个重要的概念。
1.1.前端:前端对于网站来说,通常是指,网站的前台部分包括网站的表现层和结构层。因此前端技术一般分为前端设计和前端开发,前端设计一般可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,说白了,就是大家打开网页时看到的交互页面及其显示的一些特效,前台代码实现包括基本的HTML和CSS以及JavaScript/ajax,现在最新的高级版本HTML5、CSS3,以及SVG等。
1.2.后端:又称为后台,有时也称为网站管理后台,是指用于管理网站前台的一系列操作,如:产品、企业信息的增加、更新、删除等。通过网站管理后台,可以有效的管理网站供浏览者查阅的信息。网站的后台通常需要帐号及密码等信息的登陆验证,登陆信息正确则验证而后进入网站后台的管理界面进行相关的一系列操作,前台完成的是单纯的网页,几乎不具有功能性;后台完成的作品可以称之为网络应用程序,它们可以实现一定的应用功能,也就是说后台人员的工作是编程。从简单的留言板到复杂的论坛,从简单的个人网站系统到复杂的内容管理系统(CMS——Content Management System ),都可以称为网络应用程序。
1.3.HTML:超文本标记语言,标准通用标记语言下的一个应用。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言的结构包括“头”部分(英语:Head)、和“主体”部分(英语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。
2.数据交互方式:
2.1 后台数据传前端:直接在视图函数(views.py中的函数)中渲染一个 list 或 dict 的内容,和网页其它部分一起显示到网页上(一次性地渲染,还是同一次请求)
view.py
def index(req):
username = req.COOKIES.get('username','')
user_list=getAllUser(req)#检索所有拥有username和id的用户对象
return render_to_response('login_user.html' ,{'user_list': user_list,'username':username})
login_user.html中的部分代码
2.2.前端数据传后台:
前端html中的部分代码:
lang= "en" class= "no-js" >
class= "page-container" >
class= "wrapper" align= "left" >
{% for item in user_list %}
type= "radio" name= "radio-btn" class= "regular-radio" value= {{ item . id }} /> {{ item.username }} />
{% endfor %}
style= "text-align:center;" >
后台view.py数据获取代码:
def jsonclient(req):#获取json对象
try:
print("start json POST")
req = json.loads((req.body).decode())
print("get json succee")
return req
except:
import sys
info = "%s || %s" % (sys.exc_info()[0], sys.exc_info()[1])
print(info)
def index(req):
json=jsonclient(req)#获取json对象
if json is not None:#判断是选择用户还是选择输入方式
user_ower = json['ownerID']#获取owerID
print('json is not none user_ower = ',user_ower)
#message=Message()#当选择消息接收者时创建消息对象
response = render_to_response('login_user.html' ,{'user_list':user_list,'username':username,'user_first':user_first},context_instance=RequestContext(req))
response.set_cookie('ownerID',user_ower,3600)
return response
else:
return render_to_response('login_user.html',req)