是否可以在 django 项目的根目录下提供静态 html 页面?

Is it possible to serve a static html page at the root of a django project?

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

我似乎找不到有关如何执行此操作的任何信息,但我想我必须修改 mysite/mysite/urls.py,因为目前导航到 root 会给我一个 404,其中包含有关无法找到匹配项的消息网址。

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

前一个是我最好的猜测(我知道这是一个糟糕的猜测)。那应该(如果我错了请纠正我)匹配根 URL,但我不知道如何说 "hey django just look for a static file",或者静态 html 应该存在的位置,或者如何判断django 它所在的地方。

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

P.S。我在 PA

上的 virtualenv 中使用 django 1.8

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

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

我通常从 mostleast 特定的 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

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

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

处提供

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

我一直在修补 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