Advertisement
Guest User

Кастомная user-модель

a guest
Jan 16th, 2018
609
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.28 KB | None | 0 0
  1. # accounts/view.py
  2. from .form import SignUpForm
  3. from django.shortcuts import render
  4. from django.shortcuts import redirect
  5.  
  6. from django.contrib.auth import login as django_login
  7. from django.contrib.auth import authenticate
  8. from django.contrib.auth.decorators import login_required
  9. from django.views.decorators.cache import never_cache
  10. from django.views.decorators.csrf import csrf_protect
  11. from django.views.decorators.debug import sensitive_post_parameters
  12.  
  13. @csrf_protect
  14. def signup(request, template_name='accounts/signup.html'):
  15.     if request.method == 'POST':
  16.         form = SignUpForm(request.POST)
  17.         if form.is_valid():
  18.             form.save()
  19.             username = form.cleaned_data.get('username')
  20.             password = form.cleaned_data.get('password1')
  21.             user = authenticate(username=username, password=password)
  22.             django_login(request, user)
  23.  
  24.             return redirect('home')
  25.  
  26.     else:
  27.         form = SignUpForm()
  28.  
  29.     return render(request, template_name, {'form': form})
  30.  
  31. # accounts/form.py
  32.  
  33. from django import forms
  34. from django.contrib.auth.forms import AuthenticationForm
  35. from django.contrib.auth.forms import UserCreationForm
  36. from django.contrib.auth.models import AbstractUser
  37. from django.contrib.auth.models import User
  38.  
  39. class SignUpForm(UserCreationForm):
  40.     last_name = forms.CharField(label='Фамилия', max_length=30, required=True,
  41.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'Иванов'}))
  42.  
  43.     first_name = forms.CharField(label='Имя', max_length=30, required=True,
  44.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'Иван'}))
  45.    
  46.     patronymic = forms.CharField(label='Отчество', max_length=30, required=True,
  47.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'Иванович'}))
  48.  
  49.     email = forms.EmailField(label='Электронная почта', max_length=254,
  50.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'example@example.ru'}))
  51.  
  52.     birth_day = forms.CharField(label='Дата рождения', max_length=10, required=True,
  53.         widget=forms.DateInput(attrs={'type': 'date'}))
  54.  
  55.     inn_id = forms.CharField(label='ИНН', max_length=12, required=True,
  56.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'ИНН состоит из 12 цифр'}))
  57.  
  58.     passport_s = forms.CharField(label='Серия пасспорта', max_length=4, required=True,
  59.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'Серия пасспорта состоит из 4 цифр'}))
  60.  
  61.     passport_n = forms.CharField(label='Номер пасспорта', max_length=6, required=True,
  62.         widget=forms.TextInput(attrs={'class':'form-input','type':'text','placeholder': 'Номер пасспорта состоит из 6 цифр'}))
  63.    
  64.    
  65. # accounts/model.py
  66. # Как сохранить нижепреведённых полей модели?
  67. from django.db import models
  68.  
  69. class CustomUser(models.Model):
  70.     user = models.OneToOneField(User, on_delete=models.CASCADE)
  71.     email = models.EmailField(max_length=255, unique=True)
  72.     first_name = models.CharField(max_length=50, blank=True)
  73.     last_name = models.CharField(max_length=50, blank=True)
  74.     patronymic = models.CharField(max_length=50, blank=True)
  75.     birth_day = models.DateTimeField()
  76.  
  77.     inn_id = models.IntegerField(default=0, blank=True)
  78.     passport_n = models.IntegerField(default=0, blank=True)
  79.     passport_s = models.IntegerField(default=0, blank=True)
  80.    
  81.    
  82. # accounts/templates/accounts/signup.html
  83.  
  84. {% extends 'form.html' %}
  85.  
  86. {% block content %}
  87. <div class="container">
  88.   <form method="post" action="{% url 'signup' %}">
  89.     <div class="row">
  90.  
  91.     <h4>Регистрация</h4>
  92.     {% csrf_token %}
  93.     {% for field in form %}
  94.       <p>
  95.         {{ field.label_tag }}<br>
  96.         {{ field }}
  97.         {% for error in field.errors %}
  98.           <p style="color: red">{{ error }}</p>
  99.         {% endfor %}
  100.       </p>
  101.     {% endfor %}
  102.     <button type="submit" class="button-submit">Регистрация <i class="fa fa-check"></i></button>
  103.   </form>
  104. </div>
  105. {% endblock %}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement