جانغو الاشتراك المشاهدات
-
20-12-2019 - |
سؤال
أريد إنشاء عرض الاشتراك.هنا ، رمز بلدي:
from django.shortcuts import get_object_or_404, render, redirect
from django.contrib.auth import authenticate, login as auth_login
from django.contrib.auth.models import User
# create a function to resolve email to username
def get_user(email):
try:
return User.objects.get(email=email.lower())
except User.DoesNotExist:
return None
def signup(request):
if request.method == "GET":
return render(request, 'accounts/signup.html')
if request.method == "POST":
email = request.POST['email']
last_name = request.POST['last_name']
first_name = request.POST['first_name']
password = request.POST['password']
password2 = request.POST['password2']
user = get_user(email)
if password == password2:
if user is None:
user = User.objects.create_user(last_name, email, password)
user.first_name = first_name
user.save()
user = authenticate(username=user, password=password)
#login
return redirect('/')
else:
#messages
return render(request, 'accounts/signup.html')
else:
#messages
return render(request, 'accounts/signup.html')
أحتاجك لجعل ذلك أفضل لأنه كما ترى ، إنه فوضوي بعض الشيء.
أنا لا أعرف إذا كان من الأفضل استخدام البرنامج المساعد مثل جانغو التسجيل لهذه المهمة?
شكرا جزيلا!
المحلول
أولا كنت تفعل فئة النموذج في forms.py في التطبيق الخاص بك.هناك يمكنك تحديد الحقول الخاصة بك مثل 'البريد الإلكتروني', 'الاسم الأول', ...يمكنك تجاوز clean
الطريقة في فئة النموذج الخاص بك ، ثم يمكنك استخدامه مع وجهة نظرك.
class RegistrationForm(forms.Form):
username = forms.EmailField(max_length=30, widget=forms.TextInput(attrs=attrs_dict))
password1 = forms.PasswordField()
password2 = forms.PasswordField()
first_name = forms.CharField(max_length=100)
# rest of the fields
def clean(self):
cleaned_data = super(RegistrationForm, self).clean()
username = cleaned_data.get("username")
password1 = cleaned_data.get("password1")
password2 = cleaned_data.get("password2")
# you can validate those here
class Meta:
model = User
ثم في وجهة نظرك أنت
from forms import RegistrationForm
def signup(request):
if request.method == "GET":
return render(request, 'accounts/signup.html')
if request.method == "POST":
form = RegistrationForm(data = request.POST):
if form.is_valid():
user = form.save(False)
user.set_password(user.password)
user.save()
user = authenticate(username=user.username, password=request.POST['password1'])
login(request, user)
return redirect('/')
فإنه يجعل الكثير من استخدام ما جانغو يمنحك مجانا.
لا تنتمي إلى StackOverflow