是否可以在 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'))
我通常从 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
在 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
。
我在 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'))
我通常从 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
在 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
。