当在django中传递post ajax时,一个变量显示另一个不显示。

问题描述 投票:0回答:1

我不知道为什么会出现这个错误。

TypeError: 'method' object is not subscriptable

同样的事情,我在另一个帖子中使用请求ajax,我得到了所有的变量。

但在这里我只得到 frm 可变 pk .

HTML

<form id="message-form" action="message/message_form/" user_id="{{u.id}}" method="POST">
        {% csrf_token %}
        <div class="container">
            <div class="row">
                <div id="text" class="col-10">
                    {{ msgform.text }}
                </div>
                <div class="col-1">
                    <button id="submit" class="btn"  type="submit"><img height="30px" src="/static/img/send-button.png" alt="send"></button>
                </div>
            </div>
        </div><br>
    </form>

脚本

<script type="text/javascript">
        var frm = $('#message-form');
        var id;
        id =   frm.attr("user_id"); 

        frm.submit(function () {
            $.ajax({
                type: frm.attr("method"),
                url: frm.attr("action"),
                dataType: 'json', 
                data: { csrfmiddlewaretoken: "{{ csrf_token }}", pk:id, frm:frm},
                error: function(data) {
                   // $("#MESSAGE-DIV").html("Something went wrong!");
                }
            });
            return false;
        });
</script>

视图.py

def post(self, request):
        new_msg = request.POST.get('text')
        print(new_msg)
        form = MessageForm()
//I GET ERROR HERE MY PK VARIBLE NOT PRESENT IN REQUEST POST
        print('request.id is here',request.POST.get['pk'])
        u = get_object_or_404(User,pk=request.POST['pk'])
        msg = message.objects.filter(sender=request.user).filter(receiver=u).all() | message.objects.filter(sender=u).filter(receiver=request.user).all() 
        if form.is_valid():
            smg = form.save(commit=False)
            smg.sender = request.user
            smg.receiver = u
            smg.save()
            if request.user != u and User.objects.filter(receiver__receiver=u,receiver__read=False).exists:
                notify.send(request.user, recipient=u, verb="message you please read in message box",public=False)
        msg = message.objects.filter(sender=request.user).filter(receiver=u).all() | message.objects.filter(sender=u).filter(receiver=request.user).all() 
        data = { "messages":msg}
        return HttpResponse(json.dumps(data), content_type='application/json')

编辑

形式.py

class MessageForm(forms.ModelForm):
    class Meta:
        model = message
        fields = ('text','image')
        widgets = {
        # <input type="text" class="form-control" aria-label="Dollar amount (with dot and two decimal places)">

            'text': forms.Textarea(attrs={'rows':1.5,'placeholder':"Enter message",'type':'text',
                          'class':'form-control','aria-label':"Dollar amount (with dot and two decimal places)",}),
        }

錯誤

Internal Server Error: /message/message_form/
Traceback (most recent call last):
  File "C:\publish\lib\site-packages\django\core\handlers\exception.py", line 34, in inner     
    response = get_response(request)
  File "C:\publish\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response 
    response = self.process_exception_by_middleware(e, request)
  File "C:\publish\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\publish\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\publish\lib\site-packages\django\views\generic\base.py", line 97, in dispatch       
    return handler(request, *args, **kwargs)
  File "C:\publish\studentcollegeworld\messaging\views.py", line 23, in post
    print('request.id is here',request.POST.get['pk'])
TypeError: 'method' object is not subscriptable
[12/Jun/2020 10:48:01] "POST /message/message_form/ HTTP/1.1" 500 88429

主要问题是 pk 变量不显示在后期数据中

javascript jquery django ajax ajaxform
1个回答
0
投票

你需要通过 pk 作为一个隐藏的输入到您的表单中

<form [...]>
    <input type="hidden" id="user_id" name="user_id" value="{{u.id}}">
[...]
</form>
© www.soinside.com 2019 - 2024. All rights reserved.