Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何修复Matching查询不存在的错误?_Javascript_Json_Django_Ajax_Django Models - Fatal编程技术网

Javascript 如何修复Matching查询不存在的错误?

Javascript 如何修复Matching查询不存在的错误?,javascript,json,django,ajax,django-models,Javascript,Json,Django,Ajax,Django Models,我一直在使用django和ajax开发一个类似的系统,这个类似的系统与instagram的非常相似。完成代码后,我开始得到一个匹配后的查询不存在错误,这是一个痛苦的问题。我看不出代码中有错误,但我认为问题出在views.py文件上,因为回溯触发了那里的一行。如何修复此错误 models.py class Post(models.Model): text = models.CharField(max_length=200) user = models.ForeignKey(

我一直在使用django和ajax开发一个类似的系统,这个类似的系统与instagram的非常相似。完成代码后,我开始得到一个
匹配后的查询不存在
错误,这是一个痛苦的问题。我看不出代码中有错误,但我认为问题出在views.py文件上,因为回溯触发了那里的一行。如何修复此错误

models.py

class Post(models.Model):
      text = models.CharField(max_length=200)
      user = models.ForeignKey(User, on_delete=models.CASCADE, default='username')
      liked = models.ManyToManyField(User, default=None, blank=True, related_name='liked')

      def __str__(self):
        return str(self.id)
views.py(upload view上载表单,home显示上载表单,like_post是负责喜欢和不喜欢帖子的视图,home_序列化操作系统是包含json的操作系统,因此当单击like按钮时页面不会重新加载)

url.py

urlpatterns = [
    path('', views.home, name='home'),
    path('upload', views.upload, name='upload'),
    path('like/', views.like_post, name='like-post'),
    path('serialized/', views.home_serialized, name='serialized-view'),
]
home.html

    <form method='post'  action="{% url 'upload' %}">
        {% csrf_token %}
        <input type="text" name="text" placeholder="Add a comment..." required="" id="id_text">
        <button class="submit-button" type="submit">Save</button>
    </form>
    {% for content in contents %}
        {% if content %}
        <ul class="list-group">
            <li class="list-group-item">{{ content.text }}</li>
            <form action="{% url 'like-post' %}" class='like-form' method="POST" id={{content.id}}>
                {% csrf_token %}
                <input type='hidden' name="post_ok" value="{{ content.ok }}">
                <button class='like-btn{{ content.id }}'>
                  {% if request.user in content.liked.all %}
                      Unlike
                  {% else %}
                      Like
                  {% endif %}
                </button>
              </form>
              <strong>{{ content.liked.all.count }}</strong>
        </ul>
        {% endif %}
    {% endfor %}
    <script type='text/javascript'>
        $(document).ready(function(){
            $('.like-form').submit(function(e){
              e.preventDefault()
              console.log('works')
              const post_id = $(this).attr('id')
              console.log(this)
              console.log(post_id)
              const likeText = $(`.like-btn${post_id}`).text()
              console.log(likeText)
              const trim = $.trim(likeText)
              console.log(trim)
              const url = $('.like-form').attr('action')
              console.log(url)

              $.ajax({
                type: 'POST',
                url: url,
                data : {
                  'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val(),
                  'post_pk': post_id,
                },
                success: function(error){
                  console.log('success')

                  $.ajax({
                    type: 'GET',
                    url: 'http://127.0.0.1:8000/serialized/',
                    success: function(response){
                      console.log(response)
                      $.each(response, function(index, element){
                        console.log(index)
                        console.log(element.content)
                        if (post_id == element.id) {
                          if(trim == 'Like') {
                            console.log('unlike')
                            $(`.like-btn${post_id}`).html('Unlike')
                          } else if (trim == 'Unlike') {
                            console.log('like')
                            $(`.like-btn${post_id}`).html('Like')
                          } else {
                            console.log('ups')
                          }
                        }
                      })
                    },
                    error: function(error){
                      console.log('error')
                    }
                  })
                },
                error: function(error){
                  console.log('error', error)
                }
              })
            })
        });
    </script>

我不确定回溯中说了什么。如果你能提供,也许会更有意义。但我假设这是因为中的类似
post\u obj=post.objects.get(pk=pk)
def-like_-post(请求)
功能

具有给定主键的Post不存在。您可以做的是检查pk是否存在

如果Post.objects.filter(pk=pk).exists():
#它存在
或者您可以执行一个
尝试除外
方法

试试看:
post_obj=post.objects.get(pk=pk)
如果post_obj.like.all()中的用户:
post_obj.like.remove(用户)
其他:
post_obj.liked.add(用户)
除:
#如果post不存在会发生什么

很抱歉,我忘记添加回溯,但我现在才添加!别介意你的代码对我来说完美无瑕!我使用了你提到的第一个案例,使用了if语句。另外,我如何添加ajax来计算喜欢的内容?当前,必须刷新页面以计算最喜欢的页面。
    <form method='post'  action="{% url 'upload' %}">
        {% csrf_token %}
        <input type="text" name="text" placeholder="Add a comment..." required="" id="id_text">
        <button class="submit-button" type="submit">Save</button>
    </form>
    {% for content in contents %}
        {% if content %}
        <ul class="list-group">
            <li class="list-group-item">{{ content.text }}</li>
            <form action="{% url 'like-post' %}" class='like-form' method="POST" id={{content.id}}>
                {% csrf_token %}
                <input type='hidden' name="post_ok" value="{{ content.ok }}">
                <button class='like-btn{{ content.id }}'>
                  {% if request.user in content.liked.all %}
                      Unlike
                  {% else %}
                      Like
                  {% endif %}
                </button>
              </form>
              <strong>{{ content.liked.all.count }}</strong>
        </ul>
        {% endif %}
    {% endfor %}
    <script type='text/javascript'>
        $(document).ready(function(){
            $('.like-form').submit(function(e){
              e.preventDefault()
              console.log('works')
              const post_id = $(this).attr('id')
              console.log(this)
              console.log(post_id)
              const likeText = $(`.like-btn${post_id}`).text()
              console.log(likeText)
              const trim = $.trim(likeText)
              console.log(trim)
              const url = $('.like-form').attr('action')
              console.log(url)

              $.ajax({
                type: 'POST',
                url: url,
                data : {
                  'csrfmiddlewaretoken': $('input[name=csrfmiddlewaretoken]').val(),
                  'post_pk': post_id,
                },
                success: function(error){
                  console.log('success')

                  $.ajax({
                    type: 'GET',
                    url: 'http://127.0.0.1:8000/serialized/',
                    success: function(response){
                      console.log(response)
                      $.each(response, function(index, element){
                        console.log(index)
                        console.log(element.content)
                        if (post_id == element.id) {
                          if(trim == 'Like') {
                            console.log('unlike')
                            $(`.like-btn${post_id}`).html('Unlike')
                          } else if (trim == 'Unlike') {
                            console.log('like')
                            $(`.like-btn${post_id}`).html('Like')
                          } else {
                            console.log('ups')
                          }
                        }
                      })
                    },
                    error: function(error){
                      console.log('error')
                    }
                  })
                },
                error: function(error){
                  console.log('error', error)
                }
              })
            })
        });
    </script>
Traceback (most recent call last):
  File "C:\Users\MaríaPaola\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\MaríaPaola\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\MaríaPaola\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\MaríaPaola\projects\nwpc\like\views.py", line 65, in like_post
    post_obj = Post.objects.get(pk=pk).exists()
  File "C:\Users\MaríaPaola\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "C:\Users\MaríaPaola\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\query.py", line 415, in get
    raise self.model.DoesNotExist(
like.models.Post.DoesNotExist: Post matching query does not exist.