gpt4 book ai didi

python - Django - 表单未显示在模板上,仅显示按钮

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:20 25 4
gpt4 key购买 nike

我已经尝试了一切,但我不明白为什么它没有出现。我在这个网站上到处搜索但没有运气。该按钮显示了,但是当我单击时,它在 get_profile 处给我一个 TypeError,说:

异常值:
get_profile() 收到意外的关键字参数“用户名”

这是我的代码:

模型.py

class CustomUser(AbstractBaseUser):
email = models.EmailField('email address', unique=True, db_index=True)
username = models.CharField('username', max_length=50, unique=True, db_index=True)
first_name = models.CharField(max_length=50, blank=False)
last_name = models.CharField(max_length=50, blank=False)
joined = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
date_joined = models.DateTimeField(_('date joined'), default=timezone.now)

USERNAME_FIELD = 'username'
REQUIRED_FIELDS = []

objects = CustomUserManager()

def __unicode__(self):
return self.username

表单.py

from django import forms
from apps.accounts.models import CustomUser


class RegistrationForm(forms.ModelForm):
email = forms.EmailField(widget=forms.TextInput, label='email')
username = forms.CharField(widget=forms.TextInput, label='username')
password1 = forms.CharField(widget=forms.PasswordInput, label='Enter your password')
password2 = forms.CharField(widget=forms.PasswordInput, label='Re-type your password')
first_name = forms.CharField(widget=forms.TextInput, label='First Name')
last_name = forms.CharField(widget=forms.TextInput, label='Last Name')

class Meta:
model = CustomUser
fields = ['email', 'username', 'password1', 'password2', 'first_name', 'last_name']

def clean(self, password1, password2):
cleaned_data = super(RegistrationForm, self).clean()
if password1 in self.cleaned_data and password2 in self.cleaned_data:
if self.cleaned_data['password1'] != self.cleaned_data['password2']:
raise forms.ValidationError("Passwords don't match. Please enter both fields again")
return self.cleaned_data

def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.set_password(self.cleaned_data['password1'])
if commit:
user.save()
return user

View .py

def register(request):
"""
User Registration View
"""
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
CustomUser = form.save()
CustomUser.save()
return redirect('home.html')
else:
form = RegistrationForm()
return render_to_response('register.html', {
'form': form,
}, context_instance=RequestContext(request))

def get_profile(request):
username = CustomUser.username
return render_to_response(request, 'profile.html', {'username': username})

url.py

urlpatterns = patterns ('', 
url(r'register$', 'apps.accounts.views.register', name='register'),)

注册.html

{% load staticfiles %}
{% load crispy_forms_tags %}

<!DOCTYPE html>
<html lang="en">
<body>
{% block body %}

<form method='POST' action="register" enctype= 'multipart/form-data'>{% csrf_token %}
<table>{{ form.ast_table}}</table>
<input type='submit' class="btn btn-default" value="Register" />
</form>
{% endblock %}
</body>
</html>

最佳答案

您似乎没有 get_profile View 函数的正确签名。

您应该检查您的网址,您可能有类似的内容

url(r'^profile/(?P<username>\w+/$', get_profile),

如果是这样,您的观点应该是

def get_profile(request, username):
#you can get the user
user = CustomUser.objects.get(username=username)

return render_to_response(request, 'profile.html', {'username': username, 'user': user})

关于python - Django - 表单未显示在模板上,仅显示按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36685574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com