Django view newsletter.views.control_newsletter_edit没有';t返回HttpResponse对象。它没有返回任何结果
这是我的URL.py:Django view newsletter.views.control_newsletter_edit没有';t返回HttpResponse对象。它没有返回任何结果,django,python-3.x,django-models,django-templates,django-views,Django,Python 3.x,Django Models,Django Templates,Django Views,这是我的URL.py: from django.urls import path from newsletter.views import control_newsletter, control_newsletter_list, control_newsletter_detail, control_newsletter_edit urlpatterns = [ path('newsletter/', control_newsletter, name='control_newslette
from django.urls import path
from newsletter.views import control_newsletter, control_newsletter_list, control_newsletter_detail, control_newsletter_edit
urlpatterns = [
path('newsletter/', control_newsletter, name='control_newsletter'),
path('newsletter_list/', control_newsletter_list, name='control_newsletter_list'),
path('newsletter_detail/<int:pk>/', control_newsletter_detail, name='control_newsletter_detail'),
path('newsletter_edit/<int:pk>/', control_newsletter_edit, name='control_newsletter_edit'),]
当我尝试访问时事通讯\u edit/1/
从我的teplate代码中的此处开始:
<div class="col-sm-8">
<div class="col-sm-2">
<a href="{% url 'control_newsletter_edit' pk=newsletter.pk %}">
<button class="btn-success">Edit</button>
</a>
</div>
我一次又一次地检查了我的url.py和views.py,但我找不到我的问题所在。
有人知道我为什么要面对这个错误吗?
此外,很抱歉我的问题中出现了错误。
如果您需要完整的my views.py,请告诉。如果request.method=='POST',您的问题就在这里。因为您可以看到,只有在request方法是POST时才返回模板,确保返回的内容超出了if条件如果request.method==“POST”:您的问题就在这里,因为您可以看到,只有在请求方法为POST时才返回模板,确保您返回的内容超出了if条件您没有提到如果出现非
httppost
请求时应该发生什么。它可以通过使用一个简单的else
块来完成,如下所示
def control_newsletter_edit(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)
if request.method == 'POST':
form = NewsletterCreationForm(request.POST, instance=Newsletter)
if form.is_valid():
newsletter = form.save()
if newsletter.status == 'Published':
subject = newsletter.subject
body = newsletter.body
from_email = global_settings.EMAIL_HOST_USER
for email in newsletter.email.all():
send_mail(subject=subject, from_email=from_email, recipient_list=[email], message=body,
fail_silently=True)
messages.success(request, 'Your Changes Write Successfully.',
'alert alert-success alert-dismissible')
else:
messages.warning(request, 'SomeThing Went Wrong..',
'alert alert-warning alert-dismissible')
return redirect('control_newsletter_detail', pk=newsletter.pk)
else:
form = NewsletterCreationForm(instance=newsletter)
context = {
'form': form,
}
return render(request, 'control_panel/control_newsletter.html', context)
else:
form = NewsletterCreationForm() # if method not HTTP POST
return render(request, 'control_panel/control_newsletter.html', {"form":form})
def控制通讯编辑(请求,主键):
时事通讯=获取对象或404(时事通讯,主键=主键)
如果request.method==“POST”:
表单=时事通讯CreationForm(request.POST,实例=时事通讯)
如果form.is_有效():
新闻稿=form.save()
如果newsletter.status==“已发布”:
主题=时事通讯。主题
body=newsletter.body
from\u email=全局设置。email\u主机\u用户
对于newsletter.email.all()中的电子邮件:
发送邮件(主题=主题,发件人=发件人,收件人列表=[电子邮件],邮件=正文,
失败(默认值=真)
messages.success(请求“您的更改写入成功”,
“警报成功警报可驳回”)
其他:
消息。警告(请求“出现问题…”,
‘警告可驳回’)
返回重定向('control\u newsletter\u detail',pk=newsletter.pk)
其他:
表单=时事通讯CreationForm(实例=时事通讯)
上下文={
“形式”:形式,
}
返回渲染(请求“控制面板/control\u newsletter.html”,上下文)
其他:
form=newsletteCreationForm()#如果方法不是HTTP POST
return render(请求'control_panel/control_newsletter.html',{“form”:form})
您没有提到如果出现非HTTP POST的请求时会发生什么。它可以通过使用一个简单的else
块来完成,如下所示
def control_newsletter_edit(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)
if request.method == 'POST':
form = NewsletterCreationForm(request.POST, instance=Newsletter)
if form.is_valid():
newsletter = form.save()
if newsletter.status == 'Published':
subject = newsletter.subject
body = newsletter.body
from_email = global_settings.EMAIL_HOST_USER
for email in newsletter.email.all():
send_mail(subject=subject, from_email=from_email, recipient_list=[email], message=body,
fail_silently=True)
messages.success(request, 'Your Changes Write Successfully.',
'alert alert-success alert-dismissible')
else:
messages.warning(request, 'SomeThing Went Wrong..',
'alert alert-warning alert-dismissible')
return redirect('control_newsletter_detail', pk=newsletter.pk)
else:
form = NewsletterCreationForm(instance=newsletter)
context = {
'form': form,
}
return render(request, 'control_panel/control_newsletter.html', context)
else:
form = NewsletterCreationForm() # if method not HTTP POST
return render(request, 'control_panel/control_newsletter.html', {"form":form})
def控制通讯编辑(请求,主键):
时事通讯=获取对象或404(时事通讯,主键=主键)
如果request.method==“POST”:
表单=时事通讯CreationForm(request.POST,实例=时事通讯)
如果form.is_有效():
新闻稿=form.save()
如果newsletter.status==“已发布”:
主题=时事通讯。主题
body=newsletter.body
from\u email=全局设置。email\u主机\u用户
对于newsletter.email.all()中的电子邮件:
发送邮件(主题=主题,发件人=发件人,收件人列表=[电子邮件],邮件=正文,
失败(默认值=真)
messages.success(请求“您的更改写入成功”,
“警报成功警报可驳回”)
其他:
消息。警告(请求“出现问题…”,
‘警告可驳回’)
返回重定向('control\u newsletter\u detail',pk=newsletter.pk)
其他:
表单=时事通讯CreationForm(实例=时事通讯)
上下文={
“形式”:形式,
}
返回渲染(请求“控制面板/control\u newsletter.html”,上下文)
其他:
form=newsletteCreationForm()#如果方法不是HTTP POST
返回渲染(请求,'control_panel/control_newsletter.html',{“form”:form})
是的,那是我的问题,谢谢你,先生。我只是犯了一个错误,把其他内容放在:form=NewsletterCreationForm(instance=newsletter)context={“form”:form,}返回渲染(请求,'control\u panel/control\u newsletter.html',context)
带有额外的SPCE,当我删除它时,它被修复了。是的,我的问题就是我的问题,谢谢你,先生。我只是犯了一个错误,把它放在下面:form=NewsletterCreationForm(instance=newsletter)context={'form':form,}返回渲染(请求'control\u panel/control\u newsletter.html',上下文)
和额外的spcae,当我删除它时,它会被修复。
def control_newsletter_edit(request, pk):
newsletter = get_object_or_404(Newsletter, pk=pk)
if request.method == 'POST':
form = NewsletterCreationForm(request.POST, instance=Newsletter)
if form.is_valid():
newsletter = form.save()
if newsletter.status == 'Published':
subject = newsletter.subject
body = newsletter.body
from_email = global_settings.EMAIL_HOST_USER
for email in newsletter.email.all():
send_mail(subject=subject, from_email=from_email, recipient_list=[email], message=body,
fail_silently=True)
messages.success(request, 'Your Changes Write Successfully.',
'alert alert-success alert-dismissible')
else:
messages.warning(request, 'SomeThing Went Wrong..',
'alert alert-warning alert-dismissible')
return redirect('control_newsletter_detail', pk=newsletter.pk)
else:
form = NewsletterCreationForm(instance=newsletter)
context = {
'form': form,
}
return render(request, 'control_panel/control_newsletter.html', context)
else:
form = NewsletterCreationForm() # if method not HTTP POST
return render(request, 'control_panel/control_newsletter.html', {"form":form})