【发布时间】:2021-07-28 05:44:02
【问题描述】:
我在 django 上遇到了某些发布请求错误。当我点击 form submit button 时弹出错误,指出 django 找不到我要的页面。请我想知道我哪里弄错了,因为我还是 django 的初学者。
def account_register(request):
# if request.user.is_authenticated:
# return redirect('account:dashboard')
if request.method == 'POST':
registerForm = RegistrationForm(request.POST)
if registerForm.is_valid():
user = registerForm.save(commit=False)
user.email = registerForm.cleaned_data['email']
user.set_password(registerForm.cleaned_data['password'])
user.is_active = False
user.save()
current_site = get_current_site(request)
subject = 'Activate your Account'
message = render_to_string('account/registration/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject=subject, message=message)
return HttpResponse('registered succesfully and activation sent')
else:
registerForm = RegistrationForm()
return render(request, 'account/registration/register.html', {'form': registerForm})
urlpatterns = [
path('account/register', views.account_register, name='register'),
path('activate/<slug:uidb64>/<slug:token>)/', views.account_activate, name='activate')
]
urls.py(主要的 django 应用程序)
urlpatterns = [
path('', include('account.urls', namespace='account')),
]
views.py
def account_register(request):
if request.method == 'POST':
registerForm = RegistrationForm(request.POST)
if registerForm.is_valid():
user = registerForm.save(commit=False)
user.email = registerForm.cleaned_data['email']
user.set_password(registerForm.cleaned_data['password'])
user.is_active = False
user.save()
current_site = get_current_site(request)
subject = 'Activate your Account'
message = render_to_string('account/registration/account_activation_email.html', {
'user': user,
'domain': current_site.domain,
'uid': urlsafe_base64_encode(force_bytes(user.pk)),
'token': account_activation_token.make_token(user),
})
user.email_user(subject=subject, message=message)
return HttpResponse('registered succesfully and activation sent')
else:
registerForm = RegistrationForm()
return render(request, 'account/registration/register.html', {'form': registerForm})
模板
account_activation_email.html
{% autoescape off %}
Hi {{ user.user_name }},
Your account has successfully created
http://{{ domain }}{% url 'account:activate' uidb64=uid token=token %}
{% endautoescape %}
account/registration/register.html
<form class="account-form p-4 rounded col-lg-10 mx-auto" action="." method="post">
{% csrf_token %}
{% if form.errors %}
<p>Please correct the following errors:</p>
{% for field in form %}
{% if field.errors %}
<div class="alert alert-primary" role="alert">
{{ field.label }}: {{ field.errors|striptags }}
</div>
{% endif %}
{% endfor %}
{% endif %}
<label>{{ form.user_name.label }}<span class="text-muted small">
(Required)</span></label>
{{ form.user_name }}
<label>{{ form.email.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.email }}
<label>{{ form.password.label}}<span class="text-muted mb-4">
</span></label>
<small class="form-text text-muted mb-4 small">
At least 8 characters and 1 digit
</small>
{{ form.password }}
<label>{{ form.password2.label}}<span class="text-muted small">
(Required)</span></label>
{{ form.password2 }}
<button class="btn btn-primary btn-block py-2 mb-4 mt-5 fw500 w-100" type="submit">Register</button>
<p class="text-center">
<a>Already have an account?</a>
</p>
</form>
【问题讨论】:
-
更新问题以包含 html 模板内容以及 Django 错误页面。
-
我已经添加了模板,但是在上传图片时遇到了一些挑战。但是,当我单击注册表单的提交按钮时,如果它成功,它应该发送一个 HttpResponse,就像在 views.py 中指定的那样。在项目中,Django遍历url并告诉我
The current path, account/, didn’t match any of these(即我在urls.py中指定的任何url,但如果注册成功,我应该得到一个HttpResponse发送回浏览器而不是渲染模板) -
能否请您出示您的
account/registration/register.html模板? -
@GwynBleidD2,我已经添加了注册模板
标签: python html django django-templates