首页 > 解决方案 > 在第一个视图重定向后,我无法让我的第二个 django 视图验证发布请求

问题描述

我有一个问题,我想要第二个视图来验证“发布”请求是否得到验证,执行代码集。这是一个例子:

from django.shortcuts import render, redirect
from django.http import HttpResponse, Http404
from django.urls import reverse
from django.template import loader
from django.core.mail import send_mail, mail_admins
from .forms import Register
# Importing Models
from .models import Users
# Create your views here.

# Create your views here.
def register(request):
    if request.method == "POST":
        forms = Register(request.POST)

        if forms.is_valid():
            f_name = forms.cleaned_data["first_name"]
            l_name = forms.cleaned_data["last_name"]
            em = forms.cleaned_data["email"]
            num = forms.cleaned_data["phone"]
            user = Users(
                first_name=f_name,
                last_name=l_name,
                email=em,
                phone=num
                )
            user.save()
            request.session['f_name'] = f_name
            request.session['status'] = True
            request.session['email'] = em
            return redirect('success')
            
        
        else:
            forms = Register()
    
    forms = Register()
    title = "Join now"
    
    context = {
    'title':title,
    'forms':forms,
    }
    
    return render(request, 'register/register.html', context)

def success(request):
    #This part wont validate after the post redirect?
    **if request.method == 'POST':**
        welcome = request.session['f_name']
        email = request.session['email']

        # User Mailing
        subject = f'Welcome to JSG {welcome}'
        message = 'Testing'
        from_email = 'mydev1996@gmail.com'
        recipient_list = [email]

        user_mail = send_mail(
            subject,
            message,
            from_email,
            recipient_list,
            fail_silently = False,
            )

        # Admin Mailing
        subject = f'Welcome to JS {welcome}'
        message = 'Testing'

        admin_mail = mail_admins(
            subject,
            message,
            fail_silently = False,
            )

        context = {
            'welcome' : welcome,
        }
    
    else:
        print("error is here")
        raise Http404
    return render(request, 'register/success.html', context)

抱歉,如果这是一个愚蠢的问题,因为我仍在学习,而我在 django 中最难的部分是将事物从一种观点转移到另一种观点。我也很想知道“会话”是否是跨视图移动对象发布数据的正确方法?还是有更安全的方法?

标签: pythondjangodjango-views

解决方案


推荐阅读