04 - 创建一个视图
04 - 视图
作者: 张启卫
时间: 2017年4月13号
功能:
- 使用Django创建一个视图
创建视图:
polls/views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse(“Hello,World. You’are at the polls index.”)
def detail(request, question_id):
return HttpResponse(“You’re looking at question %s.” % question_id)
def result(request, question_id):
response = “You’re looking at the results of question %s.”
return HttpResponse(response % question_id)
def vote(request, question_id):
return HttpResponse(“You’re voting on question %s.” % question_id)
第二步:增加url
http://127.0.0.1:8000/polls/2/vote/
django根据URL查询步骤:
1. 从mysite/settings.py中的ROOT_URLCONF中查找
2. 根据指示到url中urlpattern中查找
3. 在url中匹配应用程序到相应的应用程序中url中路径中查找
第二步:MVC分离
创建一个templates 在 polls目录中
在templates目录中创建polls目录
在polls目录中创建一个index.html文件
polls/templates/polls/index.html
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
第三步:URL命名空间
polls/url.py
from django.conf.urls import url
from . import views
app_name = ‘polls’
urlpatterns = [
url(r’^$’, views.index, name=‘index’),
url(r’^(?P<question_id>[0-9]+)/$’, views.detail, name=‘detail’),
url(r’^(?P<question_id>[0-9]+)/results/$’, views.results, name=‘results’),
url(r’^(?P<question_id>[0-9]+)/vote/$’, views.vote, name=‘vote’),
]
polls/templates/polls/index.html
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>

浙公网安备 33010602011771号