我正在 Django 1.6 中开发一个应用程序,想知道我通过管理界面上传的照片是否是 Django 术语中的“静态文件”。
我有这个模型:
from django.db import models
class ShowroomDetail(models.Model):
title = models.CharField(max_length=1000)
description = models.CharField(max_length=4000)
class ShowroomPhoto(models.Model):
showroom = models.ForeignKey(ShowroomDetail, related_name='photos')
photo = models.ImageField(upload_to='images/')
Run Code Online (Sandbox Code Playgroud)
我用它作为开发页面的基础,其中可以显示一个或多个图像以及标题和描述。这些图像只会通过管理界面上传,并且稍后可能会添加该页面的更多照片。
那么这些上传的照片是“静态文件”吗?
我有一个页面,用户可以在其中将 PDF/图像文件上传到他们的个人资料。这些文件的模型相对简单:
class ResumeItemFile(models.Model):
item = models.ForeignKey(ResumeItem, related_name='attachment_files')
file = models.FileField(
max_length=255, upload_to=RandomizedFilePath('resume_attachments'),
verbose_name=_('Attachment'))
name = models.CharField(max_length=255, verbose_name=_('Naam'), blank=True)
Run Code Online (Sandbox Code Playgroud)
我正在创建一个视图,其中链接到配置文件 ( item) 的所有文件都收集在一个 .zip 文件中。我在本地工作,但在生产中我运行在以下错误中NotImplementedError: This backend doesn't support absolute paths.
主要区别在于,在生产过程中,媒体文件是通过 S3 提供的
MEDIA_URL = 'https://******.s3.amazonaws.com/'
STATIC_URL = MEDIA_URL
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Run Code Online (Sandbox Code Playgroud)
在我看来,我在attachments变量中创建了一个 ResumeItemFile 列表,它是一个如下所示的 dict列表:{'filename', ResumeItemFileObject}
for file in attachments:
storage = DefaultStorage()
filename = file[1]
file_extension = str(file[0].file).split('.')[-1]
file_object = storage.open(file[0].file.path, mode='rb')
filename, file_object.read())
file_object.close()
Run Code Online (Sandbox Code Playgroud)
虽然这在本地工作正常,但在暂存时它会在线上崩溃file_object = storage.open(file[0].file.path, …
我想在 Django 管理中上传多个文件,而不必放置多个 FileField 字段。用户能够以简单的方式管理文件;删除或更改每个上传的文件,但一次上传多个。
我认为可行的解决方案是使用多个文件字段,但问题是,我不知道用户将上传多少文件
def case_upload_location(instance, filename):
case_name = instance.name.lower().replace(" ", "-")
file_name = filename.lower().replace(" ", "-")
return "casos/{}/{}".format(case_name, file_name)
class Case(models.Model):
name = models.CharField(max_length=250)
observations = models.TextField(null = True, blank = True)
number_folder = models.CharField('Folder', max_length=250)
file1 = models.FileField('file 1', upload_to=case_upload_location, null = True, blank = True)
file2 = models.FileField('file 2', upload_to=case_upload_location, null = True, blank = True)
file3 = models.FileField('file 3', upload_to=case_upload_location, null = True, blank = True)
file4 = models.FileField('file 4', upload_to=case_upload_location, null = True, …Run Code Online (Sandbox Code Playgroud) 我正在尝试附加一个带有联系表格的文件。我的表单和视图代码如下所示:
if request.method == 'POST':
form = UploadCVForm(request.POST, request.FILES)
if form.is_valid(): # All validation rules pass
subject = "CV Sent from BiztechAfrica"
sender = form.cleaned_data['email']
message = "Some message goes in here"
name = form.cleaned_data['name']
recipients = ['herman@xxx.co.za']
cv_file = request.FILES['cv_file']
mail = EmailMessage(subject, message, sender, recipients)
mail.send()
return HttpResponse('Thanks') # Redirect after POST
else:
form = UploadCVForm()
Run Code Online (Sandbox Code Playgroud)
这是我的forms.py:
class UploadCVForm(forms.Form):
subject = "CV Sent from BiztechAfrica"
name = forms.CharField(max_length=128)
email = forms.EmailField()
cv_file = forms.Field(label='CV', widget = forms.FileInput, required …Run Code Online (Sandbox Code Playgroud) 在我的管理员中,我尝试上传图片,点击保存后我收到此错误:
SuspiciousOperation at /admin/the_chooser/book/add/
Attempted access to '/media/51VqHa8exoL.jpg' denied.
Request Method: POST
Request URL: http://localhost/admin/the_chooser/book/add/
Django Version: 1.5.2
Exception Type: SuspiciousOperation
Exception Value:
Attempted access to '/media/51VqHa8exoL.jpg' denied.
Exception Location: /Users/username/.virtualenvs/django_books/lib/python2.7/site-packages/django/core/files/storage.py in path, line 259
Python Executable: /usr/bin/python
Python Version: 2.7.2
Python Path:
['/Library/Python/2.7/site-packages/pip-1.3.1-py2.7.egg',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old',
'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload',
'/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC',
'/Library/Python/2.7/site-packages',
'/Library/Python/2.7/site-packages/setuptools-0.6c11-py2.7.egg-info',
'/Users/username/Projects/django_books/',
'/Users/username/.virtualenvs/django_books/lib/python2.7/site-packages']
Run Code Online (Sandbox Code Playgroud)
我刚刚将Python Imaging Library安装到了virtualenv中.这是我的models.py文件:
from django.db import models
LITERARY_TYPE = (
('F', 'Fiction'),
('N', 'Non-ficiton'),
)
class Book(models.Model):
name = models.CharField(max_length=200)
author = …Run Code Online (Sandbox Code Playgroud) 我正在使用 Django 模型表单编写一个简单的视图,但是图像字段无法验证,并显示“此字段是必需的”错误消息。
我想知道问题出在哪里...
模型:
class Deal(AbstractModel):
IMAGE_MAX_LENGTH = 200
place = models.ForeignKey(Place, related_name='deals', related_query_name='deal', verbose_name=_("Place"))
image = models.ImageField(default='deals/default.png', max_length=IMAGE_MAX_LENGTH, upload_to='deals', verbose_name=_("Image"))
...
Run Code Online (Sandbox Code Playgroud)
看法:
@login_required
def deals_create(request):
# Get place id
place_id = request.GET.get('place')
# Get place
place = Place.objects.get(id=place_id)
# Process form data
if request.method == 'POST':
form = DealsCreateForm(request.POST, request.FILES)
# Validate post data
if form.is_valid():
# Save deal data
deal = form.save(commit=False)
deal.place = place
deal.save()
# Redirect to reload page and clear post data
return HttpResponseRedirect(reverse('deal_manager:deals_pending')) …Run Code Online (Sandbox Code Playgroud) 我对我的models.py. 我将字段从 更改FileField()为ImageWithThumbsField()
from mongoengine import *
from gradfounder.settings import DBNAME
from embed_video.fields import EmbedVideoField
from thumbs import ImageWithThumbsField
##########################################
# Mongoengine registration/authentication
#from mongoengine.django.auth import User
##########################################
#connect(DBNAME)
# connect(DBNAME, host='127.0.0.1', port=27017)
connect(DBNAME, host='xxx.xxx.xxx.xxx', port=27017)
class Author(Document):
# photo = FileField()
photo = ImageWithThumbsField(upload_to="avatars")
photoname = StringField()
Run Code Online (Sandbox Code Playgroud)
然后我得到了这个错误
File "C:\Python27\lib\site-packages\mongoengine\base\document.py", line 80, in
__init__
raise FieldDoesNotExist(msg)
FieldDoesNotExist: The field 'photo' does not exist on the document 'Author'
Run Code Online (Sandbox Code Playgroud)
我尝试迁移,syncdb但出现错误DatabaseError: (1050, "Table 'profiles_profile' …
我有一个Django应用程序,提交一个包,应该返回其中的值.将表单提交给名为"insert"的视图:
request.FILES['file']
Run Code Online (Sandbox Code Playgroud)
返回文件对象,但它是一种<InMemoryUploadedFile>.我需要的是一种获取上传文件的绝对路径的方法,以便我可以将它提供给将返回所需值的方法
谁知道我怎么能做到这一点?
谢谢
我使用 django 允许用户上传图像以及描述图像标题的文本。
用户应该能够使用编辑模板编辑图像标题并更改图像文件。这在某种程度上确实有效。
我可以在编辑模板中显示图像文件和图像标题进行编辑。我遇到的问题是,当我在文件上传输入中不包含图像文件时(用户只想更改图像标题而不是图像文件),我的代码确实更改了图像标题,但图像文件被删除从数据库中删除(物理映像文件不会从文件系统中删除)。
我可以成功更新图像详细信息,但用户必须在文件上传输入字段中包含新的图像文件或相同的图像文件,图像标题和图像详细信息才能成功更新。
看来用户必须在文件上传输入字段中包含图像文件。我试图让我的代码像 django admin 一样工作,用户不必每次更改图像标题时都包含图像文件。
如何允许用户更新图像详细信息,而无需每次用户想要更改图像标题时重新上传图像文件?
这是我的 models.py 代码:
编辑#2 - 添加 FillableModelWithLanguageVersion 和 LanguageVersion
# START: ATTACHMENT DETAILS MODEL.
def _get_document_upload_location(instance, filename):
"""
Using a function instead of a lambda to make migrations happy. DO NOT remove or rename this function in the future, as it will break migrations.
@param instance: model instance that owns the FileField we're generating the upload filename for.
@param filename: Original file name assigned by django.
""" …Run Code Online (Sandbox Code Playgroud) django ×9
python ×6
django-forms ×3
django-admin ×1
django-views ×1
file-upload ×1
filepath ×1
image ×1
mongoengine ×1