【问题标题】:Django how to set main pageDjango如何设置主页面
【发布时间】:2011-03-13 08:31:54
【问题描述】:

我想为我的应用设置主页或索引页面。 我尝试在 settings.py 中添加 MAIN_PAGE,然后创建一个返回 main_page 对象的 main_page 视图,但它不起作用 另外,我尝试在 urls.py 中添加一个声明,如

(r'^$', index),

其中 index 应该是根目录下 index.html 文件的名称(但显然不起作用)

在 Django 网站中设置主页的最佳方式是什么?

谢谢!

【问题讨论】:

    标签: django indexing set main


    【解决方案1】:

    新的首选方法是使用TemplateView 类。如果您想从direct_to_template 搬走,请参阅此SO answer

    在您的主要urls.py 文件中:

    from django.conf.urls import url
    from django.contrib import admin
    from django.views.generic.base import TemplateView
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        # the regex ^$ matches empty
        url(r'^$', TemplateView.as_view(template_name='static_pages/index.html'),
            name='home'),
    ]
    

    注意,我选择将任何静态页面链接 index.html 放在自己的目录 static_pages/ 中的 templates/ 目录中。

    【讨论】:

    • 这里不清楚static_pages/index.html的路径是什么。我无法复制它,它给出了“找不到模板”错误。
    • 我通过以下方式解决了这个问题:1) 在主 urls.py 中设置 app_name = 'myapp',2) 在主 INSTALLED_APPS 中添加 myapp INSTALLED_APPS,3) 将我的模板放在myapp/templates/myapp/index.html, 4) 更新视图以使用 template_name = 'myapp/index.html'
    【解决方案2】:

    如果你想引用一个静态页面(不让它经过任何动态处理),你可以使用django.views.generic.simple中的direct_to_template视图函数。在您的网址配置中:

    from django.views.generic.simple import direct_to_template
    urlpatterns += patterns("",
        (r"^$", direct_to_template, {"template": "index.html"})
    )
    

    (假设 index.html 位于您的模板目录之一的根目录中。)

    【讨论】:

    【解决方案3】:

    如果有人搜索答案的更新版本..

    from django.urls import re_path
    from . import views
    
    urlpatterns = [
        re_path(r'^$', views.index, name='index')
    ]
    

    在你的views.py

    def index(req):
        return render(req, 'myApp/index.html')
    

    【讨论】:

      【解决方案4】:

      您可以使用通用的direct_to_template 视图函数:

      # in your urls.py ...
      ...
      url(r'^faq/$', 
          'django.views.generic.simple.direct_to_template', 
          { 'template': 'faq.html' }, name='faq'),
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-15
        • 2014-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        相关资源
        最近更新 更多