【问题标题】:Is it possible to serve a static html page at the root of a django project?是否可以在 django 项目的根目录提供静态 html 页面?
【发布时间】:2015-08-19 10:38:23
【问题描述】:

我在 pyhtonanywhere 上托管了一个 django 应用程序。该应用程序位于username.pythonanywhere.com/MyApp。我想在username.pythonanywhere.com 提供一个静态 html 页面。这可能吗?本质上,它将用作链接到/MyApp、/MyApp2 和其他未来应用程序的索引。

我似乎找不到有关如何执行此操作的任何信息,但我认为我必须修改 mysite/mysite/urls.py,因为导航到 root 目前给我一个 404 并显示有关未能在 url 中找到匹配项的消息。

urlpatterns = [
        url(r'^/$', ???),
        url(r'^admin/', include(admin.site.urls)),
        url(r'^MyApp/', indluce('MyApp.urls')).
]

前一个是我最好的猜测(我知道一个不好的猜测)。那应该(如果我错了,请纠正我)与根 URL 匹配,但我不知道怎么说“嘿 django 只是查找一个静态文件”,或者该静态 html 应该在哪里,或者如何告诉 django 它在哪里生活。

尽量不要砍掉我的头。我是 django 的新手。

附:我在 PA 上的 virtualenv 中使用 django 1.8

【问题讨论】:

    标签: python html django static pythonanywhere


    【解决方案1】:

    当然可以。在我只需要渲染模板的情况下,我使用TemplateView。示例:

    url(r'^$', TemplateView.as_view(template_name='your_template.html'))
    

    我通常从 most 到 least 来排序我的 URL 模式,以避免意外匹配:

    from django.views.generic import TemplateView
    
    urlpatterns = [
        url(r'^admin/', include(admin.site.urls)),
        url(r'^MyApp/', include('MyApp.urls')),
        url(r'^$', TemplateView.as_view(template_name='your_template.html')),
    ]
    

    至于 Django 在哪里查找模板,由您的配置来告诉 Django 在哪里查找:https://docs.djangoproject.com/en/1.8/topics/templates/#configuration

    【讨论】:

    • 而 html 文件位于 mysite/mysite/templates/?
    • 它位于您在配置中DIRS 值中指定的任何位置,这是一个目录路径列表。
    • 啊没有看到文档链接的最后一点。谢谢楼主!
    • 我不确定这是否是一个真正的静态文件。通常,静态文件是直接来自应用程序服务器的服务器文件,例如 Apache,而不是来自框架的文件。虽然我很确定这里的解决方案是 OP 想要的,但并不是说它实际上使有问题的文件成为静态的。
    • @user405205​​4 我明白你在说什么,但也完全有可能 OP 问题中的模板文件不包含任何 Django 模板标签。至少这是我在回答这个问题时所做的假设。
    【解决方案2】:

    在 PythonAnywhere 上,您可以使用 Web 应用程序的静态文件工具在静态文件到达 Django 之前为其提供服务:

    将名为 index.html 的文件放入目录中,然后将静态文件条目指向该目录。如果静态文件的 URL 是 / 并且目录是包含 html 文件的目录,则文件将在 / 处提供。

    请注意,您不希望该目录位于您的任何代码之上,否则您会将您的代码公开为静态文件,即如果您的代码位于 / 中,您不想使用目录 /somewhere/blah某处/blah/code,你会想把它放在/somewhere/no_code_here

    【讨论】:

      【解决方案3】:

      我一直在修改 Django 版本 3.2,在创建 Django 应用程序后,我能够在项目的根目录中提供静态 HTML 页面,就像在他们的官方教程中一样,在根 urls.py 文件中如下所示:

      from django.views.generic import TemplateView
      
      urlpatterns = [
          path('polls/', include('polls.urls')),
          path('admin/', admin.site.urls),
          path('', TemplateView.as_view(template_name='home/base.html')),
      ]
      

      假设home/base.html 放置在默认模板文件夹所在的位置。例如,如果我只是重新使用polls 模板目录,我可以创建一个类似polls/templates/home/ 的文件夹来存储base.html。

      【讨论】:

        猜你喜欢
        • 2020-04-18
        • 2019-01-17
        • 2012-12-14
        • 1970-01-01
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-06
        相关资源
        最近更新 更多