Я не могу получить свое второе представление django для проверки запроса на публикацию после перенаправления первого представления

#python #django #django-views

Вопрос:

У меня возникла проблема, когда я хочу, чтобы второе представление, в котором оно проверяет, проверен ли запрос «post», выполнило набор кода. Вот пример:

 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, — это переносить вещи из одного представления в другое. Я также хотел бы знать, является ли «Сеанс» правильным способом перемещения данных публикации объектов между представлениями? или есть более предпочтительный и безопасный способ?

Комментарии:

1. перенаправление приводит к получению запросов, а не к отправке запросов…

2. хорошо, вот почему, есть ли способ обойти это тогда или лучшее практическое решение?

3. Почему бы вам просто не отправить письмо в самом первом представлении? Пусть второй вид будет просто для отображения, вам действительно не нужно передавать какие-либо данные для вашего варианта использования.

4. Поэтому я пытаюсь сделать так, чтобы во втором представлении отображалась «страница успеха», поэтому мне нужно было бы отрисовывать HTML-шаблон, возможно ли отрисовывать несколько шаблонов в одном представлении?