Как сделать log out

101
04 февраля 2021, 08:10

Хочу сделать logout . регистрацию сам прописал в view а авторизацию использовал встроейный метод django.auth LoginView

urls.py

from django.urls import path, include
from django.contrib.auth.views import LoginView
from . import views

urlpatterns =[
    path('register', views.register, name='register'),
    path(r'login/', LoginView.as_view(template_name='registration/login.html', success_url='news/'), name='login'),
    path('logout', views.logout, name='logout'),
    path('accounts/profile/', views.indexs, name='indexs'),
]

views.py

def register(request):
    if request.method == 'POST':
        user_form = UserRegistrationForm(request.POST)
        username = request.POST['username']
        password1 = request.POST['password1']
        password2 = request.POST['password2']
        email = request.POST['email']
        context = {
                   'username': username,
                   'password1': password1,
                   'password2': password2,
                   'email': email}
        if user_form.is_valid():
            # Create a new user object but avoid saving it yet
            new_user = user_form.save(commit=False)
            # Set the chosen password
            new_user.set_password(user_form.cleaned_data['password1'])
            # Save the User object
            new_user.save()
            return render(request, 'registration/registred.html', {'new_user': new_user})
    else:
        user_form = UserRegistrationForm()
    return render(request, 'registration/registred.html')

def indexs(request):
    return render(request,'ShapeHtml/MainShape.html')

forms.py

from django.contrib.auth.models import User
from django import forms

class UserRegistrationForm(forms.ModelForm):
    password1 = forms.CharField(label='Password', widget=forms.PasswordInput)
    password2 = forms.CharField(label='Repeat password', widget=forms.PasswordInput)
    class Meta:
        model = User
        fields = ('username', 'email')
    def clean_password2(self):
        cd = self.cleaned_data
        if cd['password1'] != cd['password2']:
            raise forms.ValidationError('Passwords don\'t match.')
        return cd['password2']
Answer 1

Точно так же, как и с LoginView, есть LogoutView

Пример:

urls.py:

from django.contrib.auth.views import LogoutView
...

urlpatterns = [
    path(r'logout/', LogoutView.as_view(), name='logout'),
    ...
]

Здесь Вы можете подробнее про это почитать.

READ ALSO
HTML5 drag and drop баг в chrome

HTML5 drag and drop баг в chrome

Я обнаружил странное поведение перетаскиваемой картинки в Chrome, тогда как в FIREFOX все работает отличноДело в том что при использовании метода...

115
Добавление API в C#

Добавление API в C#

как добавить API в приложение с Windows Forms ?

120