学习django和python.
在完成教程后,只需设置一个新站点.现在为了论证,我想添加一堆关于我们,常见问题解答基本的html页面,动态元素非常有限,你是否继续在我的urls.py文件中为每个页面写一个新行?或者是他们用一些简洁的方式来说明所有**.html直接映射到相关的.html文件?
一般来说,即使它确实需要一个视图,我还必须在url.py文件中为每个页面写一个新行吗?
Pet*_*ers 26
只要URL中有一些唯一标识部分,您就不需要在urls.py中为每个直接模板URL创建一个条目.
例如,您可以说以".html"结尾的所有网址都引用了模板中的直接文件.
urlpatterns = patterns('django.views.generic.simple',
(r'(.+\.html)$', 'direct_to_template'),
# ...
)
Run Code Online (Sandbox Code Playgroud)
Igo*_*kiy 16
目前,最好的方法是使用基于类的通用视图中的TemplateView:
from django.views.generic.base import TemplateView
url(r'^$', TemplateView.as_view(template_name='index.html'), name='home'),
Run Code Online (Sandbox Code Playgroud)
bri*_*anz 12
写一个抓住你感兴趣的静态页面的网址
url(r'^(?P<page_name>about|faq|press|whatever)/$', 'myapp.staticpage', name='static-pages')
Run Code Online (Sandbox Code Playgroud)
在staticpage考虑到功能myapp
from django.views.generic.simple import direct_to_template
from django.http import Http404
def staticpage(request, page_name):
# Use some exception handling, just to be safe
try:
return direct_to_template(request, '%s.html' % (page_name, ))
except TemplateDoesNotExist:
raise Http404
Run Code Online (Sandbox Code Playgroud)
当然,您需要遵循模板的命名约定,但可以根据需要扩展此模式.
这比.+\.html模式更好,因为它会将不存在的模板视为404,.+\.html如果模板不存在则会导致500错误.
kir*_*pit 10
如果您因为已弃用而使用基于类的视图,则可以创建一个直接呈现自己的模板的简单包装器:direct_to_template
from django.views.generic import TemplateView
from django.template import TemplateDoesNotExist
from django.http import Http404
class StaticView(TemplateView):
def get(self, request, page, *args, **kwargs):
self.template_name = page
response = super(StaticView, self).get(request, *args, **kwargs)
try:
return response.render()
except TemplateDoesNotExist:
raise Http404()
Run Code Online (Sandbox Code Playgroud)
并在你的路由器:
from myapp.static.views import StaticView
urlpatterns = patterns('',
url(r'^(?P<page>.+\.html)$', StaticView.as_view()),
# ...
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28631 次 |
| 最近记录: |