如何将 django-sitegate 添加到模板或现有页面?
How do I add django-sitegate to a template or existing page?
我一直在学习 wagtail 教程 here,并且已经安装和配置了一些其他包的基本站点设置。
但是,在尝试添加 django-sitegate 以具有用户注册和登录功能时,我遇到了麻烦。我在这里遵循 sitegate 快速示例,它与文档中快速入门指南中的说明相同。
所以,我在 models.py
的顶部添加了以下内容
from django.shortcuts import render
from sitegate.decorators import sitegate_view
我在 models.py 的 'BlogPage' 模型中包含了以下内容:
@sitegate_view # This also prevents logged in users from accessing our sign in/sign up page.
def entrance(request):
return render(request, 'entrance.html', {'title': 'Sign in & Sign up'})
然后我将以下内容附加到我的 blog_page.html 模板中:
{% extends "blog_page.html" %}
{% load sitegate %}
{% block page_contents %}
<div class="my_signin_block">
{% sitegate_signin_form %}
</div>
<div class="my_signup_block">
{% sitegate_signup_form %}
</div>
{% endblock %}
这给出了错误
TemplateSyntaxError at /blog/
<ExtendsNode: extends "blog_page.html"> must be the first tag in the template.
因此,当我将扩展行移动到文件顶部时,它起作用了,但是返回了一个空白的 html 页面,其中包含用于调整视口的基本 bootstrap 代码,以及单个空 div.
然而,当将模板代码放入它自己的文件 site_gate.html 时,我在尝试通过 blog/site_gate.html
访问它时收到 404 错误
我通过我的站点对 blog_page.html 进行了递归 grep,但似乎找不到定义视图或模型模板的位置。我不确定如何将我的 site_gate 模板添加到模板列表中。
我正在尝试获得一个简单的站点门注册页面,最终能够将其包含在我的 blog_page.html 模板的模态中。
我哪里错了?
"appended to the template" 是什么意思?您不直接在它应该继承的文件中添加 {% extend %}
标记,而是在它自己的模板中添加。然后,您可以从您的视图中调用此子模板。
我不知道您的文件结构,但通常您会有一个文件夹 <your_app_name>
,其中包含您的 models.py、views.py 等。在该文件夹中,您创建Template
文件夹和其中的 <your_app_name>
文件夹,其中将包含您应用的模板。
my_app
|
--- Template
| |
| --- my_app
| |
| --- a_template.html
---models.py
---views.py
...
你的my_app.views.py
@sitegate_view # This also prevents logged in users from accessing our sign in/sign up page.
def entrance(request):
return render(request, 'my_app/a_template.html', {'title': 'Sign in & Sign up'})
你的my_app.url.py
from django.urls import path
from . import views
app_name = 'my_app'
urlpatterns = [
path('some_name/', views.entrance, name='some_name'),
]
并确保您应用的网址包含在 <name_of_your_project>
文件夹中
您的 <name_of_your_project>
.urls.py 必须包括:
from django.urls import include
...
urlpatterns = [
...
path('my_app/', include('my_app.urls')),
...
]
所以现在当您访问 www.myawsomesite/my_app/some_name/ 时,它将调用您的 entrance
视图,该视图将呈现并 return a_template.html.
我一直在学习 wagtail 教程 here,并且已经安装和配置了一些其他包的基本站点设置。
但是,在尝试添加 django-sitegate 以具有用户注册和登录功能时,我遇到了麻烦。我在这里遵循 sitegate 快速示例,它与文档中快速入门指南中的说明相同。
所以,我在 models.py
的顶部添加了以下内容from django.shortcuts import render
from sitegate.decorators import sitegate_view
我在 models.py 的 'BlogPage' 模型中包含了以下内容:
@sitegate_view # This also prevents logged in users from accessing our sign in/sign up page.
def entrance(request):
return render(request, 'entrance.html', {'title': 'Sign in & Sign up'})
然后我将以下内容附加到我的 blog_page.html 模板中:
{% extends "blog_page.html" %}
{% load sitegate %}
{% block page_contents %}
<div class="my_signin_block">
{% sitegate_signin_form %}
</div>
<div class="my_signup_block">
{% sitegate_signup_form %}
</div>
{% endblock %}
这给出了错误
TemplateSyntaxError at /blog/
<ExtendsNode: extends "blog_page.html"> must be the first tag in the template.
因此,当我将扩展行移动到文件顶部时,它起作用了,但是返回了一个空白的 html 页面,其中包含用于调整视口的基本 bootstrap 代码,以及单个空 div.
然而,当将模板代码放入它自己的文件 site_gate.html 时,我在尝试通过 blog/site_gate.html
访问它时收到 404 错误我通过我的站点对 blog_page.html 进行了递归 grep,但似乎找不到定义视图或模型模板的位置。我不确定如何将我的 site_gate 模板添加到模板列表中。
我正在尝试获得一个简单的站点门注册页面,最终能够将其包含在我的 blog_page.html 模板的模态中。
我哪里错了?
"appended to the template" 是什么意思?您不直接在它应该继承的文件中添加 {% extend %}
标记,而是在它自己的模板中添加。然后,您可以从您的视图中调用此子模板。
我不知道您的文件结构,但通常您会有一个文件夹 <your_app_name>
,其中包含您的 models.py、views.py 等。在该文件夹中,您创建Template
文件夹和其中的 <your_app_name>
文件夹,其中将包含您应用的模板。
my_app
|
--- Template
| |
| --- my_app
| |
| --- a_template.html
---models.py
---views.py
...
你的my_app.views.py
@sitegate_view # This also prevents logged in users from accessing our sign in/sign up page.
def entrance(request):
return render(request, 'my_app/a_template.html', {'title': 'Sign in & Sign up'})
你的my_app.url.py
from django.urls import path
from . import views
app_name = 'my_app'
urlpatterns = [
path('some_name/', views.entrance, name='some_name'),
]
并确保您应用的网址包含在 <name_of_your_project>
文件夹中
您的 <name_of_your_project>
.urls.py 必须包括:
from django.urls import include
...
urlpatterns = [
...
path('my_app/', include('my_app.urls')),
...
]
所以现在当您访问 www.myawsomesite/my_app/some_name/ 时,它将调用您的 entrance
视图,该视图将呈现并 return a_template.html.