Автоудаление введенных пользователем данных после закрытия окна или выхода из системы - PullRequest
0 голосов
/ 18 июня 2019

У меня есть приложение, в которое пользователь вводит данные, и они сохраняются в БД через формы Djnago. Но я не хочу сохранять введенные пользователем данные навсегда, только до тех пор, пока пользователь не войдет в систему. Как только пользователь выйдет из системы или закроет свой браузер, я хочу, чтобы Djnago удалил все введенные пользователем данные. Я не хочу связывать эту модель с пользователем через Foreignkey, поскольку мне сложно настроить через формы Django.

Пожалуйста, посмотрите на код и скажите, как мне этого добиться. Я слышал о AutoCommit = False о БД.

views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import *
from django.contrib.admin.views.decorators import staff_member_required
from .forms import *
from django.shortcuts import *
from .models import *
from django.contrib.auth.forms import *
from django.contrib.auth import *
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
from django.views.generic import CreateView
from django.views import generic
from .models import *






def reg_user(request):
    if request.method == 'POST':
        form = UserCreationForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            raw_password = form.cleaned_data.get('password1')
            return redirect('LoginPage')
    else:
        form = UserCreationForm()
    return render(request, 'userfiles/reg.html', {'form': form})





Also there is an issue here. Whenever I use the following decorator I get this error


  File "C:\Users\Bitswits 3\Desktop\Maala\MaalaWeddings\userfiles\urls.py", line 22, in <module>
    url(r'^invite/$', InviteCreate.as_view(), name='Invite-Page'),le "C:\Users\BITSWI~1\Desktop\Maala\Maala\lib\site-package
AttributeError: 'function' object has no attribute 'as_view'




# @login_required(login_url='LoginPage')
class InviteCreate(CreateView):
    form_class = InviteForm
    model = Invite
    template_name = "userfiles/Invite.html"

    def get_success_url(self):
            return reverse('Invite-Page')

urls.py

from django.conf.urls.static import static
from django.conf import settings
from django.conf.urls import url
from . import views
from django.views.generic import *
from django.views import generic
from django.contrib.auth import views as auth_views

from .views import (
    InviteCreate

)


urlpatterns = [


    url(r'^invite/$', InviteCreate.as_view(), name='Invite-Page'),

    url(r'^changepassword/$', views.change_password, name='Pass-Change'),

    url(r'^(?i)registration/$', views.reg_user, name='Reg-Page'),


    url(r'^(?i)login/$', auth_views.LoginView.as_view(
        template_name='userfiles/login.html'), name='LoginPage'),



] 

models.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import models



class Invite(models.Model):


    invite_first_name = models.CharField(
        "First Name", default="", max_length=35)
    invite_last_name = models.CharField(
        "Last Name", default="", max_length=35)
    invite_msg = models.TextField("Invitation Message")


1 Ответ

0 голосов
/ 18 июня 2019

Для использования login_required в базовом представлении класса взгляните на документы https://docs.djangoproject.com/en/2.2/topics/class-based-views/intro/#decorating-the-class

Я полагаю, что приглашение используется, чтобы позволить пользователю приглашать других людей в ваше приложение Django? Если это так, вы можете указать в поле uuid Invite и в электронном письме с приглашением со ссылкой на регистрацию с помощью uuid в URL. Поэтому, когда кто-то регистрируется с приглашением uuid, вы удаляете эту запись.

Я не знаю, как долго вы хотите, чтобы приглашение было действительным, но вы также можете добавить поле даты и времени с истекшим сроком действия и периодически удалять все приглашения с истекшим сроком действия

...