Я пытаюсь загрузить изображение с формой модели, используя шаблон пользователя, в базу данных, и оно не работает, но оно работает со страницей администратора, я получаю все остальные данные, кроме изображения, код ниже, я знаю, что это не так отлично, но я расстраиваюсь, и я надеюсь, что кто-то может помочь, особенно с моими views.py Большое спасибо. Заранее спасибо!
Models.py
import os, random
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import pre_save
from django.utils import timezone as tz
from django.urls import reverse
from .utils import unique_slug_generator
def get_filename_and_ext(filename):
base_name = os.path.basename(filename)
name ,ext = os.path.splitext(base_name)
return name,ext
def upload_file_to(instance, filename):
new_filename = random.randint(1,29494923)
name, ext = get_filename_and_ext(
final_filename = '{new_filename}{ext}'.format(new_filename=new_filename, ext=ext)
return 'post/{new_filename}/{final_filename}'.format(new_filename=new_filename, final_filename=final_filename)
class Post(models.Model):
title = models.CharField(max_length=20)
slug = models.SlugField(blank=True, unique=True)
content = models.TextField()
time = models.DateTimeField(auto_now_add=True)
image = models.ImageField(upload_to=upload_file_to, null=True, blank=True)
auther = models.ForeignKey(User)
def get_absolute_url(self):
return reverse("posts:detail",kwargs={"slug":self.slug})
objects = AccountManager()
def __str__(self):
return self.title
def post_pre_save_reciver(sender, instance, *arg, **kwargs):
if not instance.slug :
instance.slug = unique_slug_generator(instance)
pre_save.connect(post_pre_save_reciver, sender = Post)
forms.py
from django import forms
from django.contrib.auth import get_user_model
# from . import models
from .models import upload_file_to, get_filename_and_ext, Post, Comment
from .utils import unique_slug_generator
class post_form(forms.ModelForm):
class Meta:
model = Post
fields = '__all__'
exclude = ['auther','slug']
views.py
@login_required(login_url="/login")
def creat_post(request):
if request.method == 'POST' :
form = post_form(request.POST or None, request.FILES or None)
if form.is_valid() :
instance = form.save(commit=False)
instance.auther = request.user
instance.save()
return redirect("../")
else :
form = post_form()
return render(request, "account/Create_post.html",{'form': form})