静态页面
让我们从“static.html”模板发布一个静态页面。
我们的 static.html -
<html>
<body>
This is a static page!!!
</body>
</html>
如果我们按照以前学习的方式那样做,我们将不得不改变myapp/views.py是 -
from django.shortcuts import render
def static(request):
return render(request, 'static.html', {})
和myapp/urls.py是 -
from django.conf.urls import patterns, url
urlpatterns = patterns("myapp.views", url(r"^static/", 'static', name = 'static'),)
最好的方法是使用通用视图。为此,我们的 myapp/views.py 将变为 -
from django.views.generic import TemplateView
class StaticView(TemplateView):
template_name = "static.html"
而我们的 myapp/urls.py 我们将是 -
from myapp.views import StaticView
from django.conf.urls import patterns
urlpatterns = patterns("myapp.views", (r"^static/$", StaticView.as_view()),)
当访问 /myapp/static 你得到 -
对于相同的结果,我们还可以执行以下操作 -
- views.py 没有变化
- 将 url.py 文件更改为 -
from django.views.generic import TemplateView
from django.conf.urls import patterns, url
urlpatterns = patterns("myapp.views",
url(r'^static/',TemplateView.as_view(template_name = 'static.html')),)
如您所见,您只需要在第二种方法中更改 url.py 文件即可。
列出并显示数据库中的数据
我们将列出 Dreamreal 模型中的所有条目。使用 ListView 通用视图类可以轻松完成此操作。编辑 url.py 文件并将其更新为 -
from django.views.generic import ListView
from django.conf.urls import patterns, url
urlpatterns = patterns(
"myapp.views", url(r'^dreamreals/', ListView.as_view(model = Dreamreal,
template_name = "dreamreal_list.html")),
)
此时需要注意的重要一点是,由通用视图传递给模板的变量是 object_list。如果您想自己命名,则需要将 context_object_name 参数添加到 as_view 方法。然后 url.py 将变为 -
from django.views.generic import ListView
from django.conf.urls import patterns, url
urlpatterns = patterns("myapp.views",
url(r'^dreamreals/', ListView.as_view(
template_name = "dreamreal_list.html")),
model = Dreamreal, context_object_name = ”dreamreals_objects” ,)
相关的模板将是 -
{% extends "main_template.html" %}
{% block content %}
Dreamreals:<p>
{% for dr in object_list %}
{{dr.name}}</p>
{% endfor %}
{% endblock %}
访问 /myapp/dreamreals/ 将产生以下页面 -