我一直在关注wagtail教程here,并进行了基本的站点设置,并安装和配置了一些其他软件包。
但是,当尝试添加django-sitegate以具有用户注册和登录功能时,我除了遇到麻烦外没有其他问题。我在这里遵循sitegate快速示例,该示例与文档快速入门指南中的说明相同。
因此,我在模型顶部添加了以下内容。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页面,其中包含用于调整视口的基本引导程序代码和一个空div。
但是,当将模板代码放入自己的文件site_gate.html时,尝试通过blog / site_gate.html访问它时出现404错误
我在我的网站上为blog_page.html做了一个递归grep,但似乎找不到定义视图或模型模板的位置。我不确定如何将site_gate模板添加到模板列表中。
我试图获得一个简单的sitegate注册页面,以便最终能够将其包含在我的blog_page.html模板的模式中。
我要去哪里错了?
答案 0 :(得分:1)
“附加到模板”是什么意思?您不能直接在假定继承的文件中添加[0-9\s]+(,[0-9\s]+)*[0-9]?$
标记,而要在其自己的模板中添加标记。然后,您可以从视图中调用此子模板。
我不知道您的文件结构,但是通常,您将有一个文件夹{% extend %}
,其中包含您的models.py,views.py等。在该文件夹中,您将创建一个<your_app_name>
文件夹和其中的Template
文件夹,其中将包含应用程序的模板。
<your_app_name>
您的my_app.views.py
my_app
|
--- Template
| |
| --- my_app
| |
| --- a_template.html
---models.py
---views.py
...
您的my_app.url.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'})
并确保您的应用的网址包含在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>
。urls.py必须包含:
<name_of_your_project>
因此,现在访问www.myawsomesite / my_app / some_name /时,它将调用您的from django.urls import include
...
urlpatterns = [
...
path('my_app/', include('my_app.urls')),
...
]
视图,该视图将呈现并返回a_template.html。