我在模型中有这个
image_name = models.ImageField(upload_to='accounts/')
Run Code Online (Sandbox Code Playgroud)
在我看来,我有
def account_form(request):
if request.method == 'POST': # If the form has been submitted...
form = AccountForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
form.save()
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = AccountForm() # An unbound form
return render_to_response('account_form.html', {
'form': form,
})
Run Code Online (Sandbox Code Playgroud)
我是否需要为保存图像做额外的编码,否则django会自己做
我在我的 Django 模型中使用了一个 imageField 并且当我尝试在 html 中显示它时无法识别照片。
这是我的models.py
from django.db import models
class LatestRelease(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=300)
cover = models.ImageField(upload_to='personal/static/img/')
display = models.BooleanField(default=True)
Run Code Online (Sandbox Code Playgroud)
这是view.py
from django.shortcuts import render
from personal.models import LatestRelease
def index(request):
releases = LatestRelease.objects.all()
return render(request, "personal/home.html", {'releases': releases})
Run Code Online (Sandbox Code Playgroud)
HTML代码
{% for release in releases %}
<img src="{{ release.cover.url }}" class='' height='235' width='235'>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
所以基本上,图像路径{{ release.cover.url }}是/personal/static/img/[image name]
,我的照片只有在我使用 url 路径/static/img/[image name]作为源时才会出现。
无论如何要取出/personal从创建的字符串{{ release.cover.url …
我已经编写了一个简单的django应用程序来测试ImageField,但我遇到的问题是upload_to似乎不起作用.以下是代码:
1 from django.db import models
2
3 # Create your models here.
4 class TestImage(models.Model):
5 img = models.ImageField(max_length=256, upload_to='images')
Run Code Online (Sandbox Code Playgroud)
在我的settings.py中,我有:
2 from os.path import dirname, join, abspath
3 __dir__ = dirname(abspath(__file__))
50 MEDIA_ROOT = join(__dir__, 'static')
55 MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
然后我使用manage.py启动python shell:
jchin@ubuntu:~/workspace/testimage$ ./manage.py shell
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> import settings
>>> from image_app.models import TestImage
>>> p = TestImage(img='test.jpg') …Run Code Online (Sandbox Code Playgroud) 我有一个模型,有一个名为'banner'的图像字段,我试图验证文件大小和尺寸,如果图像太大,则提供错误.
这是models.py:
class Server(models.Model):
id = models.AutoField("ID", primary_key=True, editable=False)
servername = models.CharField("Server Name", max_length=20)
ip = models.CharField("IP Address", max_length=50)
port = models.CharField("Port", max_length=5, default='25565')
banner = models.ImageField("Banner", upload_to='banners', max_length=100)
description = models.TextField("Description", blank=True, max_length=3000)
rank = models.IntegerField(default=0)
votes = models.IntegerField(default=0)
website = models.URLField("Website URL", max_length=200, blank=True)
user = models.ForeignKey(User)
motd = models.CharField("MOTD", max_length=150, default='n/a')
playersonline = models.CharField("Online Players", max_length=7, default='n/a')
online = models.BooleanField("Online", default=False)
sponsored = models.BooleanField("Sponsored", default=False)
lastquery = models.DateTimeField('Last Queried', auto_now=True)
slugurl = models.SlugField("SlugURL", max_length=50)
def __unicode__(self):
return …Run Code Online (Sandbox Code Playgroud) 上传日语命名图像时出现的错误是:ascii'编解码器无法对位置 45-48 中的字符进行编码:序号不在范围内(128)
当以英文字符命名时,图像上传完美。另外,奇怪的是我遇到的错误只是在我将其上传到服务器时。日语命名不会上传到部署服务器,但在开发中运行良好。
我的型号:
class Tenant_Post(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
name = models.CharField(max_length=255,null=True)
image = models.FileField(upload_to='image/tenant/',null=True)
posted_on = models.DateTimeField(auto_now_add=True, auto_now=False)
last_modified_on = models.DateTimeField(auto_now_add=False,
auto_now=True)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
我的看法:
@login_required(login_url='/')
def new(request):
if request.method == 'POST':
print request.POST
form = TenantForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
print 'success'
return HttpResponseRedirect(reverse('tenant:all'))
else:
print 'fail'
return render(request,'tenant/new.html',{'form':form,})
else:
form = TenantForm()
return render(request,'tenant/new.html',{'form':form,})
Run Code Online (Sandbox Code Playgroud)
完整追溯在这里:
File "/opt/python/run/venv/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
41. response = get_response(request) …Run Code Online (Sandbox Code Playgroud) 我找不到有关此主题的信息。选择照片后(保存表单之前)如何在 Django 中轻松创建照片预览。正如下面的视频所示:
有没有任何简单的插件可以实现此功能?我认为以这种模式发送照片非常流行(即在保存整个模型之前发送照片的缩略图)。
错误信息是:
AttributeError at /projects/
'ImageFieldFile' object has no attribute 'replace'
Request Method: GET
Request URL: http://localhost:8000/projects/
Django Version: 2.2.5
Exception Type: AttributeError
Exception Value:
'ImageFieldFile' object has no attribute 'replace'
Exception Location: .../js-portfolio/venv/lib/python3.6/site-packages/django/utils/encoding.py in filepath_to_uri, line 252
Python Executable: .../js-portfolio/venv/bin/python
Python Version: 3.6.8
Python Path:
['.../js-portfolio',
'/usr/lib/python36.zip',
'/usr/lib/python3.6',
'/usr/lib/python3.6/lib-dynload',
'.../js-portfolio/venv/lib/python3.6/site-packages']
Run Code Online (Sandbox Code Playgroud)
我有一个项目模型,它需要一个图像。我将模型添加到我的管理页面,我从管理创建了一个对象,可以添加图像没问题。当我尝试显示我的视图时会出现问题。我什至没有引用 base.html 中的图像。
我的项目模型(models.py):
from django.db import models
class Project(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
technology = models.CharField(max_length=20)
image = models.ImageField(default='default.jpg', upload_to='img')
def __str__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
我的 settings.py: …
我已将图像字段添加到内容类型"基本页面",并使用"管理显示"选项将其显示在页面顶部.然而,图像上没有样式,我不能为我的生活弄清楚如何在图像中添加一个类,以便我可以添加样式.
我django-stdimage在我的 Django 应用程序中使用它,它工作得很好,唯一的问题是我想从 HTML 模板中删除“当前”字符串、清除复选框和其余装饰。我无法弄清楚如何实现这一目标。
这是我的 StdImageField 声明models.py:
photo = StdImageField(upload_to=join('img', 'agents'),
variations={'thumbnail': (100, 100, True)}, default=None,
null=True, blank=True, )
Run Code Online (Sandbox Code Playgroud)
我已经阅读了几个关于修改 ImageField 小部件以使用该类的 SO 答案,ClearableFileInput但似乎该widget属性不允许作为StdImageField类参数。
有没有办法去除所有这些装饰?
谢谢你。
我英语不好。我希望你明白。
这是我的模型
from django.db import models
from userSystem.models import User
class Diary(models.Model):
id = models.BigAutoField(primary_key=True)
user = models.ForeignKey(User, related_name="diary_user", on_delete=models.CASCADE, null=True)
title = models.CharField(max_length=30)
content = models.CharField(max_length=800)
date_created = models.DateField(auto_now_add=True)
class DiaryImage(models.Model):
diary = models.ForeignKey(Diary, on_delete=models.CASCADE)
image = models.ImageField(default='/media/diary/default_image.jpeg', upload_to='diary',
blank=True, null=True)
Run Code Online (Sandbox Code Playgroud)
这是我的序列化器
from rest_framework import serializers
from diary.models import DiaryImage, Diary
class DiaryImageSerializer(serializers.ModelSerializer):
image = serializers.ImageField(use_url=True)
class Meta:
model = DiaryImage
fields = ['image']
class DiarySerializer(serializers.ModelSerializer):
images = serializers.SerializerMethodField()
def get_images(self, obj): …Run Code Online (Sandbox Code Playgroud) imagefield ×10
django ×9
python ×7
drupal-7 ×1
html ×1
model ×1
modelform ×1
upload ×1
validation ×1