为什么我的上传目录相对于项目目录,但Django试图从应用程序相关的路径得到它?



我正在建立一个Dev-blog来存储和参考我为我的投资组合编码的项目,我一直在尝试为我的帖子文本框添加媒体上传功能。我开始使用一个标准的RichTextField,它有一个内置的功能,可以通过URL添加图像(不需要上传)。它运行得很好,但我希望有从我的机器上传照片的功能。

博客是完全可操作的(在本地服务器上进行开发),因此所有不相关的代码都被忽略。

唯一的问题是设置路径到我的图像文件。

models.py

从django.db导入模型django。Utils导入时区django。url反向导入从ckeditor_uploader。导入RichTextUploadingField类职位(models.Model):作者= models.ForeignKey (auth.User, on_delete = models.CASCADE)title = models.CharField (max_length = 40)text = RichTextUploadingField()create_date = models.DateTimeField(default=timezone.now())publication_date = models.DateTimeField(blank=True,null=True)def发布(自我):self.publication_date = timezone.now ()self.save ()def approve_comment(自我):返回self.comments.filter (approved_comment = True)def __str__(自我):返回self.titledef get_absolute_url(自我):Return reverse('post_detail', kwargs={'pk':self.pk})def ckeditor_upload(自我):返回反向(post_detail, kwargs ={"pk":self.pk})

urls . py

<>以前django。贡献导入管理django。url导入路径、include、re_path从django.contrib.auth导入视图url模式= [路径(admin/, admin.site.urls),路径(",包括(blog.urls)),路径(/登录/账户,views.LoginView.as_view (template_name =注册/login.html), name = '登录'),path('accounts/logout/',views.LogoutView.as_view(),name='logout',kwargs={'next_page':'/'}), #{'next_page':'/'}使其返回主页re_path (r ' ^ ckeditor/',包括(ckeditor_uploader.urls)),) 以前
**settings.py**
<pre>
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'ckeditor',
'ckeditor_uploader',
'blog'
]
#
#
#
CKEDITOR_UPLOAD_PATH = 'media/uploads'
The file is being uploaded to a new media directory in the project folder, but it is trying to load it from within the app folder. 
<pre>
[20/Sep/2021 02:58:14] "POST /ckeditor/upload/ HTTP/1.1" 200 86
Not Found: /media/uploads/2021/09/20/kaki.jpg
[20/Sep/2021 02:58:14] "GET /media/uploads/2021/09/20/kaki.jpg HTTP/1.1" 404 4602
Not Found: /media/uploads/2021/09/20/kaki.jpg
[20/Sep/2021 02:58:14,942] - Broken pipe from ('127.0.0.1', 54571)

我试过了:

  • CKEDITOR_UPLOAD_PATH = 'blog/media/uploads'-相同的结果,但在博客(应用程序)文件夹。
  • 手动移动图像文件到应用程序的媒体目录-图像加载,但这有点没有意义
  • 添加根变量
    MEDIA_URL='/media/'MEDIA_ROOT = os.path.join (BASE_DIR博客/媒体)CKEDITOR_UPLOAD_PATH = 'uploads'
    -相同错误
    [20/Sep/2021 03:34:48] "POST/ckeditor/upload/HTTP/1.1"200 95未找到:/blog/media/uploads/2021/09/20/linkdn.jpg[20/Sep/2021 03:34:48] "GET/blog/media/uploads/2021/09/20/linkdn.jpg HTTP/1.1"404 4623未找到:/blog/media/uploads/2021/09/20/linkdn.jpg[20/Sep/2021 03:34:48] "GET/blog/media/uploads/2021/09/20/linkdn.jpg HTTP/1.1"404 4623
  • 尝试在文档
  • 中查找
将CKEDITOR_UPLOAD_PATH设置添加到项目的settings.py文件中。此设置指定CKEditor媒体上传目录的相对路径。CKEditor使用Django的存储API。默认情况下,Django使用文件系统存储后端(它会使用你的MEDIA_ROOT和MEDIA_URL),如果你不使用不同的后端,你必须对MEDIA_ROOT中的CKEDITOR_UPLOAD_PATH路径有写权限,即:CKEDITOR_UPLOAD_PATH = "上传/"当使用默认文件系统存储时,图像将被上传到MEDIA_ROOT中的"uploads"文件夹中,url将根据MEDIA_URL (/media/uploads/image.jpg)创建。如果你想要能够控制文件名的生成,你必须在你的设置中添加一个自定义的文件名生成器:
-没有工作。
  • 尝试上传数据-弄得一团糟。

指导问题:

  • 如果CKEDITOR_UPLOAD_PATH是上传路径,我可以指定一个加载路径,或者我留下MEDIA ROOT

  • 是否有控制加载路径的默认值?

  • 是否有一个不同的富文本和上传框,将更适合?

提前感谢任何帮助的人!<3

SOLVED

urlpatterns += static(settings.MEDIA_URL,  document_root=settings.MEDIA_ROOT) #Without this the MEDIA's URL is not recognized!!!

未添加到URL中,因此在表单请求时无法识别URL !

相关内容

  • 没有找到相关文章

最新更新