简体   繁体   中英

How to Write a blog post with slug & image (django)

When I clicked the publish button. I get this error (image field = `This field is required), and it's not submitting the post.

在此处输入图片说明

models.py:

class Blog(models.Model):
    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='post_author')
    blog_title = models.CharField(max_length=300, verbose_name='Put a Title')
    slug = models.SlugField(max_length=264, unique=True, null=True)
    blog_content = models.TextField(verbose_name='What is on your mind')
    blog_image = models.ImageField(upload_to='blog_images', verbose_name='Image', null=True)
    publish_date = models.DateTimeField(auto_now_add=True)
    update_date = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.blog_title

views.py:

@login_required
def createblog(request):
    form = CreateBlogPost()
    if request.method == 'POST':
        form = CreateBlogPost(request.POST, request.FILES)
        if form.is_valid():
            blog_obj = form.save(commit=False)
            blog_obj.author = request.user
            title = blog_obj.blog_title
            print(title)
            blog_obj.slug = title.replace(" ", "-")+"-"+str(uuid.uuid4())
            print(blog_obj.slug)
            blog_obj.save()
            return HttpResponseRedirect(reverse('index'))
    return render(request, 'App_Blog/create_blog.html', {'form': form})

This field is required this is a Validation error from Django form and it depends on your models , if you are using model form you have to set blank=True like this

blog_image = models.ImageField(upload_to='blog_images', verbose_name='Image', null=True,blank=True)

blank=True means field can be empty (it is not required field) and null=True means your database table row can accept null values.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM