django入门教程4 建立视图(View)并设置路由(URLconf)


创建模板

首先,在 polls 目录里创建一个 templates 目录。Django 将会在这个目录里查找模板文件。
在 templates 目录里,再创建一个目录 polls,然后在其中新建一个文件 index.html 。换句话说,你的模板文件的路径应该是 polls/templates/polls/index.html 。因为 Django 会寻找到对应的 app_directories ,所以你只需要使用 polls/index.html 就可以引用到这一模板了。
将下面的代码输入到刚刚创建的模板文件中:

{% if question_list %}
    
{% else %}
    

No polls are available.

{% endif %}

这是 Question 列表页面的模板。同样,再创建详情(Detail)页面模板 polls/templates/polls/detail.html:

{{ question.question_text }}

    {% for choice in question.choice_set.all %}
  • {{ choice.choice_text }}
  • {% endfor %}

创建视图(View)

打开 polls/views.py 文件编辑:

from django.views import generic
from .models import Question


class IndexView(generic.ListView):
    template_name = 'polls/index.html'
    context_object_name = 'question_list'

    def get_queryset(self):
        return Question.objects.order_by('-pub_date')


class DetailView(generic.DetailView):
    template_name = 'polls/detail.html'
    model = Question

设置路由(URLconf)

在 polls 目录新建 urls.py 文件,你的应用目录现在看起来应该是这样:

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

在 polls/urls.py 中,输入如下代码:

from django.urls import path
from . import views

app_name = 'polls'
urlpatterns = [
    path('', views.IndexView.as_view(), name='index'),
    path('/', views.DetailView.as_view(), name='detail'),
]

注:其中的 pk 即主键(Primary Key)。通过主键查找是最常见的情况,因此Django提供了一个主键精确查找的快捷方式:pk

下一步是要在根 URLconf 文件中引入我们创建的 polls.urls 模块。在 jsite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

运行服务器:

python manage.py runserver

用你的浏览器访问 http://localhost:8000/polls/,应该能够看见展示 Question 列表的页面了,点击其中的列表项,就会进入详情页面。

你可能感兴趣的:(django入门教程4 建立视图(View)并设置路由(URLconf))