接上文。前面(1)(2)部分已经实现浏览器访问工程项目,并且能后台管理新创建的app。
(二)第一个Django的app
(3)教你开始写Django1.6的第1个app
前面已经完成了model(M)的设置。剩下的只有view(V)和urls(C)了。Django的视图部分,由views.py 和 templates完成。
在polls中,我们将创建4个视图:
“index” 列表页 – 显示最新投票。“detail” 投票页 – 显示一个投票的问题, 以及用户可用于投票的表单。“results” 结果页 – 显示一个投票的结果。投票处理 – 对用户提交一个投票表单后的处理。
现在修改 views.py 创建用于视图的函数。
dizzy@dizzy-pc:~/Python/mysite$ vim polls/views.py
from django.shortcuts import render,get_object_or_404# Create your views here.from django.http import HttpResponsefrom polls.models import Polldef index(request): latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5] context = {'latest_poll_list':latest_poll_list} return render(request,'polls/index.html',context)def detail(request,poll_id): poll = get_object_or_404(Poll,pk=poll_id) return render(request,'polls/detail.html',{'poll':poll})def results(request,poll_id): return HttpResponse("you're looking at the results of poll %s." % poll_id)def vote(request,poll_id): return HttpResponse("you're voting on poll %s." % poll_id)#涉及Django的自带函数,不做深究。后面再做研究!
要想使试图能被访问,还要配置 urls.py 。mysite是整个网站的URLConf,但每个app可以有自己的URLConf,通过include的方式导入到根配置中即可。现在在polls下面新建 urls.py
from django.conf.urls import patterns,urlfrom polls import viewsurlpatterns = patterns('', #ex:/polls/ url(r'^$',views.index,name='index'), #ex:/polls/5/ url(r'^(?P\d+)/$',views.detail,name='detail'), #ex:/polls/5/results/ url(r'^(?P \d+)/results/$',views.results,name='results'), #ex:/polls/5/vote/ url(r'^(?P \d+)/vote/$',views.vote,name='vote'),)#url中,三个参数。正则的url,处理的函数,以及名称#正则表达式!!!!!
然后在根 urls.py 文件中,include这个文件即可。
dizzy@dizzy-pc:~/Python/mysite$ vim mysite/urls.py
from django.conf.urls import patterns, include, urlfrom django.contrib import adminadmin.autodiscover()urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^polls/', include('polls.urls',namespace="polls")), url(r'^admin/', include(admin.site.urls)),)#有Example:两种形式。因为是元组,所以开始有“ ‘’, ”。
然后开始创建模板文件。在polls下,创建templates文件夹。下面有index.html, detail.html 两个文件。
{% if latest_poll_list %}
- {% for poll in latest_poll_list %}
- { { poll.question }} {% endfor %}
No polls are available.
{% endif %}{ { poll.question }}
- {% for choice in poll.choice_set.all %}
- { { choice.choice_text }} {% endfor %}
(4)教你开始写Django1.6的第1个app
上面只是简单的实现了视图功能,并没有真正的实现投票功能。接下来就是完善功能。
#修改模板文件dizzy@dizzy-pc:~/Python/mysite$ vim polls/templates/polls/detail.html#需要加入form表单
{ { poll.question }}
{% if error_message %}{ { error_message }}
{% endif %}