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

时间:2015-06-04 17:20:36

标签: python html django static pythonanywhere

我在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,但我不知道怎么说“嘿django只是寻找一个静态文件”,或者静态html应该存在的地方,或者如何告诉django它在哪里住。

尽量不要低下头。我是django的新手。

P.S。我正在使用django 1.8在PA上的virtualenv

3 个答案:

答案 0 :(得分:10)

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

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

我通常会将大多数特定于最少的网址格式订购,以避免意外匹配:

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

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:0)

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