微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个用户使用 django-allauth 注册两个注册表单未呈现

如何解决多个用户使用 django-allauth 注册两个注册表单未呈现

我正在尝试使用 allauth 实现两种用户类型。我已经阅读了很多教程、文档等。仍然无法呈现我的自定义两个注册表单。当我在设置中添加 ACCOUNT_FORMS = { 'signup': ...} 使用哪个表单就可以了。但是对于两者都没有呈现。

模型.py

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    is_worker = models.BooleanField(default=False)
    is_company = models.BooleanField(default=False)

class Worker(models.Model):
    user = models.OnetoOneField(User,on_delete=models.CASCADE,primary_key=True)
    image = models.ImageField(default="default.jpg",upload_to='profile_pics')
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    phone = models.IntegerField()

    def __str__(self):
       return f'{self.user.username}'


class Company(models.Model):
    user = models.OnetoOneField(User,upload_to='profile_pics')
    adrress = models.CharField(max_length=300)
    phone = models.IntegerField()

    def __str__(self):
        return f'{self.user.username}'

forms.py

from . models import User,Worker,Company
from django import forms
from allauth.account.forms import SignupForm


class WorkerSignupForm(SignupForm):
    first_name = forms.CharField(label='First Name',max_length=50,required=True,strip=True)
    last_name = forms.CharField(label='Last Name',strip=True)
    phone = forms.CharField(label='Mobile phone',max_length=15,strip=True)
    def save(self,request):
    user = super(WorkerSignupForm,self).save(request)
    user.first_name = self.cleaned_data.get('first_name')
    user.last_name = self.cleaned_data.get('last_name')
    user.phone = self.cleaned_data.get('phone')
    user.is_worker = True
    user.save()
    return user

class CompanySignupForm(SignupForm):
    company_name = forms.CharField(label='Comapny name',max_length=100)
    adrress = forms.CharField(label='Adrress',max_length=250)
    phone = forms.CharField(label='Mobile phone',max_length=15)
    def save(self,request):
    user = super(CompanySignupForm,self).save(request)
    user.company_name = self.cleaned_data.get('company_name')
    user.adrress = self.cleaned_data.get('adrress')
    user.phone = self.cleaned_data.get('phone')
    user.is_company = True
    user.save()
    return user`

视图.py

from . forms import WorkerSignupForm,CompanySignupForm
from allauth.account.views import SignupView

class WorkerSignUpView(SignupView):
    template_name = "customuser/worker_signup.html"
    form_class = WorkerSignupForm
    redirect_field_name = 'next'
    view_name = "worker_signup_view"
    success_url = None

    def get_context_data(self,**kwargs):
        kwargs['user_type'] = "is_worker"

worker_signup_view = WorkerSignUpView.as_view()

class CompanySignUpView(SignupView):
    template_name = "customuser/company_signup.html"
    form_class = CompanySignupForm
    redirect_field_name = 'next'
    view_name = "company_signup_view"
    success_url = None

    def get_context_data(self,**kwargs):
        kwargs['user_type'] = "is_company"

company_signup_view = CompanySignUpView.as_view()

urls.py

from .views import worker_signup_view,company_signup_view



urlpatterns = [
    path("signup/worker/",view=worker_signup_view,name="worker_signup_view"),path("signup/company/",view=company_signup_view,name="company_signup_view"),]

worker_signup.html

{% extends "base.html" %}
{% load i18n %}

{% block head_title %}{% trans "Signup" %}{% endblock %}
{% block content %}
<h1>Worker</h1>
<h1>{% trans "Sign Up" %}</h1>

<p>{% blocktrans %}Already have an account? Then please <a href="{{ login_url }}">sign in</a>.{% endblocktrans %}</p>

<form class="worker_signup_form" id="worker_signup_form" method="post" action="{% url 'worker_signup_view' %}">
    {% csrf_token %}
    {{ form.as_p }}
    {% if redirect_field_value %}
        <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" />
    {% endif %}
    <button type="submit">{% trans "Sign Up" %} &raquo;</button>
</form>
{% endblock content %}

enter image description here

解决方法

正确的获取上下文数据函数

if (isset($_GET['reader'])) {
$orders = simplexml_load_file($_GET['reader'],"SimpleXMLElement",LIBXML_NOERROR |  LIBXML_ERR_NONE) or die("Error: Cannot create object"); 

//code

}else{
            echo "Invalid request!";
        } 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。