1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- from django.shortcuts import render
- # Create your views here.
- from .models import Comment
- from blog.models import Article
- from .forms import CommentForm
- from django.views.generic.edit import FormView
- from django.http import HttpResponseRedirect
- from django.contrib.auth import get_user_model
- from django import forms
- class CommentPostView(FormView):
- form_class = CommentForm
- template_name = 'blog/article_detail.html'
- def get(self, request, *args, **kwargs):
- article_id = self.kwargs['article_id']
- article = Article.objects.get(pk=article_id)
- url = article.get_absolute_url()
- return HttpResponseRedirect(url + "#comments")
- def form_invalid(self, form):
- article_id = self.kwargs['article_id']
- article = Article.objects.get(pk=article_id)
- u = self.request.user
- if self.request.user.is_authenticated:
- form.fields.update({
- 'email': forms.CharField(widget=forms.HiddenInput()),
- 'name': forms.CharField(widget=forms.HiddenInput()),
- })
- user = self.request.user
- form.fields["email"].initial = user.email
- form.fields["name"].initial = user.username
- return self.render_to_response({
- 'form': form,
- 'article': article
- })
- def form_valid(self, form):
- """提交的数据验证合法后的逻辑"""
- user = self.request.user
- article_id = self.kwargs['article_id']
- article = Article.objects.get(pk=article_id)
- if not self.request.user.is_authenticated:
- email = form.cleaned_data['email']
- username = form.cleaned_data['name']
- user = get_user_model().objects.get_or_create(username=username, email=email)[0]
- # auth.login(self.request, user)
- comment = form.save(False)
- comment.article = article
- comment.author = user
- if form.cleaned_data['parent_comment_id']:
- parent_comment = Comment.objects.get(pk=form.cleaned_data['parent_comment_id'])
- comment.parent_comment = parent_comment
- comment.save(True)
- from website.blog_signals import comment_save_signal
- port = self.request.get_port()
- username = self.request.user.username if self.request.user else ''
- comment_save_signal.send(sender=self.__class__, comment_id=comment.id, username=username, serverport=port)
- return HttpResponseRedirect("%s#div-comment-%d" % (article.get_absolute_url(), comment.pk))
|