首页 > 解决方案 > 我不能在 Django 中发帖

问题描述

我不能在 Django 中发帖,因为当我导入图像时它对我不起作用。它告诉我没有选择文件,但我选择了一个。

这是我创建的后期模型,models.py 文件:

class Post(models.Model):
    publisher = models.ForeignKey(User,on_delete=models.CASCADE)
    caption = models.CharField(max_length=100)
    date_created = models.DateTimeField(default=timezone.now())
    image = models.ImageField(upload_to="post_images")
    def __str__(self):
        return self.caption

这是 Post 模型的 forms.py 文件:

from django import forms
from .models import Post

class CreatePostForm(forms.ModelForm):
    class Meta:
        model = Post
        fields = ['caption','image']

这是views.py文件中的发布功能,它实现了我的发布功能的逻辑:

@login_required
def Publish(request):
    if request.method == "POST":
        form = CreatePostForm(request.POST,request.FILES)
        if form.is_valid():
            form.publisher = request.user
            form.save()
            return redirect("home")
    else:
        form = CreatePostForm()

    return render(request,"posts/publish.html",{
       "form":form,
    })

int urls.py 文件:

from django.urls import path
from . import views
urlpatterns = [
    path('publish/',views.Publish,name="publish"),
    path('',views.home,name="home"),
]

这是在html模板中:

{% extends "users/base.html" %}
{% load crispy_forms_tags %}
{% block title %}create{% endblock title%}

{% block content %}
    <div class="container-fluid">
        <div class="row">
            <div class="col-sm-6 col-md-5 authentification">
                <div class="form-header">
                    <h1>
                        publish
                    </h1>
                </div>
                <div class="form-body">
                    <form method="POST">

                        <fieldset class="form-group" enctype="multipart/form-data">
                            {% csrf_token %}
                            {{ form|crispy }}
                        </fieldset>
                        <div class="form-group">
                            <button type="submit" class="btn btn-primary form-control">publish</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </div>
{% endblock content %}

使用的 Django 版本是 2.2 和 Python 3.8。和 Windows 10 专业版

标签: djangowebdjango-modelsdjango-forms

解决方案



推荐阅读