簡體   English   中英

Jsonresponse 在 CreateView 中不起作用 - Django

[英]Jsonresponse not working in CreateView - Django

我試圖通過使用 JsonResponse 在用戶開始在字段中鍵入時實時獲取列表,將所有擁有“裝飾”組的用戶放入表單字段中。

這里的問題是我沒有以 Jsonresponse 的形式獲取任何數據。 如果我打印“標題”,正在獲取正確的數據,但沒有將數據帶到表格中......

視圖.py

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['...']
    def get_form(self, form_class=None):
        form = super().get_form(form_class)
        if 'term' in self.request.GET:
            qs = User.objects.filter(groups__name='decoration', username__icontains=self.request.GET.get('term'))
            titles = list()
            for product in qs:
                titles.append(product.username)
            return JsonResponse(titles, safe=False)
        return form

    def form_valid(self, form):
        form.instance.author = self.request.user
        return redirect(reverse('blog:post-detail', kwargs={'pk': obj.id}))

    def form_invalid(self, form):
        messages.error(self.request, self.error_message)
        form.instance.thumb.checked = True
        return super().form_invalid(form)

模型.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    culture = models.CharField(max_length=100)

.HTML

<div class="form-group">
  <label>Some text</label>
   {% render_field form.culture class="form-control form-st text-body" style="box-shadow: none;font-size:1.5rem;" id="nightclub" placeholder='...' autocomplete="off" %}
</div>

處理自動完成的腳本

<script>
  $( function() {
    $( "#nightclub" ).autocomplete({
      source: '{% url 'blog:post-create' %}'
    });
  });
</script>

任何幫助將不勝感激!

所以,我找到了解決方案。 我在 createview class 中定義 get_from() 時做錯了,我需要從 class 外部調用 function。

所以,結果將是:views.py

@csrf_exempt
def get_autocomplete(request):
qs = User.objects.filter(groups__name='nightclub', first_name__icontains=request.GET.get('term'))
titles = list()
for product in qs:
    titles.append(product.first_name)
return JsonResponse(titles, safe=False)

網址:

path('get-autocomplete/', get_autocomplete, name='get-autocomplete'),

html:

<script>
  $( function() {
   $( "#nightclub" ).autocomplete({
      source: '{% url "blog:get-autocomplete" %}'
      });
    });
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM