<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                >[success] # 評論功能 ~~~ 1.整個評論功能在兩個地方,第一個地方是在每一個文章詳情,第二個地方再友情鏈接 2.整體的處理邏輯,有一個類負責保存處理提交的評論,一個類負責展示所有消息 ~~~ >[success] # 處理提交評論 >[danger] ##### url ~~~ from comment.views import CommentView url(r'^comment/$', CommentView.as_view(), name='comment'), ~~~ >[danger] ##### 在comment/views 文件下創建CommentView 處理 ~~~ 1.繼承模板類TemplateView,這個類主要針對的是模板處理,沒有指定的數據庫處理返回值 2.分別重寫 他們的get 和post 方法 3.由于forms 驗證繼承的是modelfroms 所有在這里 直接使用save 保存數據庫內容 ~~~ ~~~ class CommentView(TemplateView): # 設置訪問請求 小寫 http_method_names = ['post'] template_name = "comment/result.html" def get(self, request, *args, **kwargs): return super(CommentView, self).get(request, *args, **kwargs) def post(self, request, *args, **kwargs): commnent_form = CommentForm(request.POST) if commnent_form.is_valid(): # 直接保存內容 # 想在返回的form 做添加的 首先設置 不提交 # instance = commnent_form.save(commit=False) # instance.target =target # instance.save() commnent_form.save() succeed = True # 重新跳轉 return redirect(target) else: succeed = False context = { 'succeed':succeed, 'form': commnent_form, 'target':target, } return self.render_to_response(context) ~~~ >[danger] ##### 在comment/forms 文件下創建CommentForm 處理form 驗證問題 ~~~ 1.可以直接綁定驗證 ~~~ ~~~ from django import forms from django.forms import widgets from .models import Comment class CommentForm(forms.ModelForm): target = forms.CharField( widget=widgets.HiddenInput, ) nickname = forms.CharField( label='昵稱', max_length=50, widget=widgets.Input( attrs={'class': 'form-control', 'style': "width: 60%;"}, ) ) email = forms.CharField( label='Email', max_length=50, widget=widgets.EmailInput( attrs={'class': 'form-control', 'style': "width: 60%;"}, ) ) website = forms.CharField( label='網站', max_length=100, widget=widgets.URLInput( attrs={'class': 'form-control', 'style': "width: 60%;"}, ) ) content = forms.CharField( label="內容", max_length=500, error_messages={'required':"請認真填寫"}, widget=widgets.Textarea( attrs={'rows': 6, 'cols': 60, 'class': 'form-control'}, ) ) def clean_content(self): content = self.cleaned_data.get('content') if len(content) <10: print(1) raise forms.ValidationError('多給一些建議吧') return content class Meta: model = Comment fields = ['target' ,'nickname', 'email', 'website', 'content'] ~~~ >[danger] ##### 在template /comment 文件下創建 bolck 展示評論模板 ~~~ 1.注意現在的評論列表還不能用,要經過下面的操作才可以 ~~~ ~~~ <hr/> <div class="comment"> <form action="/comment/" method="post"> {% csrf_token %} {{ comment_form }} <input class="btn btn-info" type="submit" value="提交評論"> </form> <!-- 評論列表 --> <ul class="list-group"> {% for comment in comment_list %} <li class="list-group-item"> <div class="nickname"> <a href="{{ comment.website }}">{{ comment.nickname }}</a> <span>{{ comment.created_time }}</span> </div> <div class="comment-content"> {% autoescape on %} {{ comment.content }} {% endautoescape %} </div> </li> {% endfor %} </ul> </div> ~~~ >[success] # 評論列表父類 ~~~ 1.因為評論在是,友情鏈接 和文章都展示,所以這里我們做了一個父類集成 ~~~ >[danger] ##### 在comment/views 創建一個展示父類 ~~~ 1.get_comment 查詢 對應評論的鏈接,在對應的頁面展示 ~~~ ~~~ class CommentShowMixin(object): def get_comment(self): target = self.request.path comment = Comment.objects.filter(target=target) return comment def get_context_data(self, **kwargs): kwargs.update({ 'comment_form': CommentForm(initial={'target':self.request.path}), 'comment_list':self.get_comment() }) return super(CommentShowMixin, self).get_context_data(**kwargs) ~~~ >[danger] ##### 使用 ~~~ # 文章詳情頁 繼承即可 class PostView(CommentShowMixin,DeleteView): ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看