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>
posted @ 2017-04-13 23:00  elewei  阅读(128)  评论(0)    收藏  举报