我有一个名为account的应用,其中包含用于注册和登录用户的所有模型,视图和表单。
我有一个模板位于app文件夹之外,假设包含帐户应用程序中的所有表单。
我在尝试获取模板中显示的表单时遇到问题
有人能帮帮我吗?
以下是一些代码片段:
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
# Safe from injection, etc.
class UserRegistrationForm(UserCreationForm):
email = forms.EmailField(required = True)
first_name = forms.CharField(max_length=30, required=True)
last_name = forms.CharField(max_length=30, required=True)
class Meta:
model = User
fields = ('username','email','password1', 'password2','first_name','last_name')
def save(self, commit=True):
user = super(UserRegistrationForm, self).save(commit=False)
user.email = self.cleaned_data['email']
user.first_name = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
if commit:
user.save()
return user
from forms import UserRegistrationForm
def register_user(request):
if request.POST:
form = UserRegistrationForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect('/accounts/register_success')
else:
form = UserRegistrationForm()
args = {}
# prevent forgery
args.update(csrf(request))
# empty form
args['form'] = form
return render_to_response('signup.html', args)
def register_success(request):
return render_to_response('signup_success.html')
最后是模板,它不在帐户文件夹中。它与settings.py
位于同一文件夹中{% extends "base.html" %}
{% block content %}
<form action="" method="post"> {% csrf_token %}
<ul>
{{accounts.form.as_ul}}
</ul>
<input type="submit" name="submit" value="Register">
</form>
{% endblock %}
获得从项目经理移动模板的权限后,我将其移至帐户/模板,并将渲染更改为响应地址。 我现在有新的形式没有提交的问题。 天啊正在发生什么?
答案 0 :(得分:0)
模板不应与settings.py
位于同一目录中。
它应位于帐户应用中的目录中:accounts/templates/signup/html
。
如果您已正确配置Django项目,那么Django应在重新启动Web服务器后获取模板。
答案 1 :(得分:0)
因为我看到你将form
变量传递给模板,
但您正在尝试使用accounts.form
。
希望这有帮助。
答案 2 :(得分:0)
好的问题出在我的signup.html文件上。它应该有onclick脚本,表单应该有一个id。
{% extends "base.html" %}
{% block content %}
<form action="" method="post" id="form"> {% csrf_token %}
<ul>
{{accounts.form.as_ul}}
</ul>
<input type="submit" name="submit" value="Register" onclick="submit()">
</form>
<script>
function submit() {document.forms["form"].submit();}
</script>
{% endblock %}