我的Django注册模板有问题。要注册,我使用的是Django-auth系统。从理论上讲,它是可行的,因为每当我进入注册站点时,它都会加载模板,但只显示我的注册按钮。当我单击它时,页面将重新加载并显示表格。我认为这与POST方法有关,但我无法弄清楚重定向后是否立即加载表单。
这是我的views.py:
class RegisterView(TemplateView):
template_name = 'register/register.html'
def post(self, request, *args, **kwargs):
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
form.save()
else:
form = RegisterForm()
return render(request, self.template_name, {'form': form, })
forms.py
class RegisterForm(UserCreationForm):
email = forms.EmailField()
class Meta:
model = User
fields = ['username', 'email', 'first_name', 'last_name', 'password1', 'password2']
答案 0 :(得分:0)
我认为您遇到的问题是,无论注册成功与否,您都将返回return render(request, self.template_name, {'form': form, })
。您在数据库中看到新用户了吗?
无论如何,这是我使用基于类的视图的方式(它为您节省了很多额外的代码)
forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm):
model = get_user_model()
fields = ("email", "username")
views.py
from .forms import CustomUserCreationForm
class SignupPageView(generic.CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy("login") # this refers to a name in urls.py
template_name = "account/signup.html"
urls.py
urlpatterns = [
path("/signup", SignupPageView.as_view(), name="signup"),
path("/login", YourLoginViewHere.as_view(), name="login"),
]
也请查看django-allauth。对于用户auth / login / registration,这是一个非常漂亮的软件包。