表单未显示在Django类基视图的HTML模板中

2024-04-26 07:33:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个用于主页的类基本视图博客,我想在其中显示最近的帖子和时事通讯表单,但新闻信函表单没有显示在html页面中,当它处于基于函数的视图中时,它工作正常

views.py

class Blog(View):
    template_name='blog/blogHome.html'
    def get(self,request):
        form=NewsletterForm()
        recentPost=BlogPost.objects.filter().order_by('-updated')
        page=request.GET.get('page',1)
        paginator=Paginator(recentPost,2)
        try:
            posts=paginator.page(page)
        except PageNotAnInteger:
            posts=paginator.page(1)
        except EmptyPage:
            posts=paginator.page(paginator.num_pages)
        args={"recentPost":posts}
        return render(request,self.template_name,args)
    def post(self,request):
        form=NewsletterForm(request.POST or None)
        if form.is_valid():
            instanceMail=form.save(commit=False)
            if NewsletterUser.objects.filter(email=instanceMail.email).exists():
                messages.warning(request,"Your Email is aldready exists")

            else:
                instanceMail.save()
                messages.success(request,"Your Email" +"\t" +instanceMail.email)
                subject="Thank you for Joining in JOBvsJOB"
                from_email=settings.EMAIL_HOST_USER
                to_email=[instanceMail.email]
                welcomemessage="Welcome to JOBvsJOB stay connected to get day to day "
            
                send_mail('','','','')
                return redirect('blog')
                form=NewsletterForm()
        args={"form":form}
        return render(request,self.template_name,args)

form.py

class NewsletterForm(forms.ModelForm):
    email=forms.EmailField(label='',widget=forms.TextInput(attrs={'placeholder':'Email'}))

    class Meta:
        model=NewsletterUser
        fields=('email',)

    def clean_email(self):
        email=self.cleaned_data.get('email')
        return email

url.py

from blog import views
urlpatterns=[
path('',views.Blog.as_view(),name="blog"),]

blog.html

{{form|crispy}}