首页 > 解决方案 > /blog/addblog 处的 ValueError

问题描述

我正在尝试在我的网站中实现添加帖子部分,用户可以在其中添加他的博客。页面如下所示:

在此处输入图像描述

但是当我尝试通过单击发布按钮发布时,我收到此错误:

ValueError at /blog/addblog
Field 'sno' expected a number but got 'blog title'.
Request Method: POST
Request URL:    http://127.0.0.1:8000/blog/addblog
Django Version: 3.1
Exception Type: ValueError
Exception Value:    
Field 'sno' expected a number but got 'blog title'.
Exception Location: C:\Users\jayant nigam\projects\practise\lib\site-packages\django\db\models\fields\__init__.py, line 1776, in get_prep_value
Python Executable:  C:\Users\jayant nigam\projects\practise\Scripts\python.exe
Python Version: 3.8.5
Python Path:    
['C:\\Users\\jayant nigam\\projects\\everythingcs',
 'C:\\Python38\\python38.zip',
 'C:\\Python38\\DLLs',
 'C:\\Python38\\lib',
 'C:\\Python38',
 'C:\\Users\\jayant nigam\\projects\\practise',
 'C:\\Users\\jayant nigam\\projects\\practise\\lib\\site-packages']
Server time:    Sat, 24 Oct 2020 15:17:48 +0530

博客模型.py

class Post(models.Model):
    sno = models.AutoField(primary_key=True)
    title = models.CharField(max_length=50)
    content = RichTextField(blank=True, null=True)
    # content = models.TextField()
    author = models.CharField(max_length=50)
    slug = models.SlugField(max_length=200)
    timeStamp = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['-timeStamp']

    def __str__(self):
        return self.title + " by " + self.author

视图.py

def addblog(request):
  
    if request.method == 'POST':
        title = request.POST.get('title')
        content = request.POST.get('content')
        author = request.POST.get('author')
        slug = request.POST.get('slug')
        blog = Post(title, content, author, slug)
        blog.save()
    return render(request, 'blog/add_post.html')

add_post.html

{% extends 'base.html' %}
{% block title %}
add post
{% endblock title %}

{% block body %}
<div class="container my-3">
    <form action = "{% url 'addblog' %}" method="post">

        <div class="form-group">
            <label for="title" id="Title">Title</label>
            <input type="text" class="form-control" id="title" name="title"/>
            
        </div>
        {% csrf_token %}
        <div class="form-group">
            <label for="content" id="content">Content</label>
            <textarea name="content" type='text' class="form-control" cols="10" rows="10"></textarea>
        </div>

        <div class="form-group">
            <label for="author" id="author">Author</label>
            <input type="author" class="form-control" name="author"/>
        </div>

        <button type="submit" class="btn btn-primary my-1" id='contact-button'>Post</button>
    </form>
</div>
{% endblock body %}

我猜sno字段是错误的原因,但我也无法在错误日志中纠正它我得到突出显示的行blog.save()

标签: pythondjango

解决方案


推荐阅读