我在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
答案 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
。