#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-шаблон, возможно ли отрисовывать несколько шаблонов в одном представлении?