Django 开发-视图开发
2016-06-02 22:50
686 查看
Django 开发-视图开发
前面一篇文章说了了怎么建立应用的数据模型,怎样通过管理站点管理应用的数据。这篇文章继续讲一下,怎样将数据在页面上显示。当用户去访问网站的时候,Django服务器在接收到请求的时候,首先回去匹配URLCONF, 这个在setting.py文件中进行配置
ROOT_URLCONF = 'mysite.urls'
mysite目录下的urls.py内容如下
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^polls/', include('polls.url')), ]
url(r’^admin/’, include(admin.site.urls))的意思是,如果在url中匹配上了admin,就继续匹配admin.site.urls应用的urls,这样可以看到,如果每个应用都维护自己的urls,就能做到各个应用即插即用。
同理url(r’^polls/’, include(‘polls.url’)),表示如果在url中匹配上了polls,表示继续查找polls下面的url文件。在这个项目中,url.py是我新增加的一个文件。
polls/url.py 文件
from django.conf.urls import url,include from . import views urlpatterns = [ # ex: /polls/ url(r'^$', views.index, name='index'), ]
上面的url(),第一个参数表示匹配的模式,第二个参数表示匹配上之后,要执行的view,第三个参数,是给这个url命个名字。所以上面的url说明,如果没有任何数据(^表示匹配字符串的起始、$表示匹配字符串的结束),就行执行views模块的index函数。
所以应该你也猜到了,那我们需要在views模块中加入这个函数。
/polls/views.py
from django.shortcuts import render # Create your views here. from django.http import HttpResponse from models import Question def index(request): output = "hello world" #必须返回HttpResponse return HttpResponse(output)
先看看效果,是不是感觉很简单。
这里说一下URLCONF的匹配顺序,http://192.168.255.141:8000/polls/, 首先用mysite/urls.py进行匹配,会匹配上 url(r’^polls/’, include(‘polls.url’))条目,所以会继续匹配polls/url.py,因为访问的url中/polls/没有任何内容,所以正好满足url(r’^$’, views.index, name=’index’), ,会执行views模块的index函数。
/polls/views.py
from django.shortcuts import render # Create your views here. from django.http import HttpResponse from models import Question def index(request): def index(request): output = "<title>Hello,goodnight! </title><h1>fighting</h1>" return HttpResponse(output)
直接把网页代码写到python代码里面就麻烦了,更该个网页还得更改代码,所以别急,肯定会有更好的办法,其中一个好办法就是使用html模板。
首先在polls 目录下面创建一个templates目录,后面再说为什么要创建templates目录。然后再templates目录下创建个index.html。
/polls/templates/index.html
<title> view template!</title> <hi>templates?</hi>
重写前面views模块的index
/polls/views.py
from django.shortcuts import render # Create your views here. def index(request): return render(request, 'index.html')
这里直接用了快捷键的方式使用模板,其实还可以使用django.template 模块的RequestContext, loader,同样可以实现该功能。看看效果
接着说前面留下的问题,为什么需要在polls下创建templates目录。
那是跟django查找模板的方式有关,django查找模板的方式是依次查找setting.py中INSTALLED_APPS注册的各种应用目录下template目录。
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'polls', )
好吧,视图就讲这么多了,这里就只大概讲一下实现框架。
相关文章推荐
- django中使用jquery ajax post数据出现403错误的解决办法(两种方法)
- django使用ajax post数据出现403错误如何解决
- windows+apache+mod_python配置django运行环境
- python Django连接MySQL数据库做增删改查
- django自定义Field实现一个字段存储以逗号分隔的字符串
- Django框架利用ajax实现批量导入数据功能
- python Django批量导入数据
- BootStrap扔进Django里的方法详解
- 在Python的Django框架中加载模版的方法
- 在Django中使用Sitemap的方法讲解
- 详解Django中的form库的使用
- Django中的CACHE_BACKEND参数和站点级Cache设置
- 剖析Django中模版标签的解析与参数传递
- Python中DJANGO简单测试实例
- Python的Django框架中的数据库配置指南
- 在Django的上下文中设置变量的方法
- 在Python的Django框架中编写编译函数
- 以一个投票程序的实例来讲解Python的Django框架使用
- 在Django的URLconf中进行函数导入的方法
- 在Python的Django框架中生成CSV文件的方法