我正在开发一个简单的游戏网店。我的想法是,开发者可以上传游戏,这些游戏将在 iframe 中显示(因此游戏只是 URL),然后可以玩游戏。
问题在于,发布游戏时,图标图片无法上传。因此,无法显示该图像。
游戏模型:
表单的生成非常简单,只需按照以下方式进行操作:
图片的URL是正确的,但图片本身无法上传。即使我手动将图片移动到那里,如果我将其作为HTML图像的源放置,它也不会显示出来。
在settings.py中,我有以下几行代码:
我该怎么修复这个问题?
问题在于,发布游戏时,图标图片无法上传。因此,无法显示该图像。
游戏模型:
class Game(models.Model):
name = models.CharField(max_length=255)
url = models.CharField(max_length=255)
price = models.DecimalField(max_digits=9, decimal_places=2)
developer = models.CharField(max_length=255, blank=True, null=True)
icon = models.ImageField(upload_to="images/", default="images/default_game_img.png")
description = models.CharField(max_length=255)
published = models.DateField(auto_now=False, auto_now_add=True)
我使用 Django ModelForm:
class PublishForm(forms.ModelForm):
class Meta:
model = Game
fields = ['name', 'description', 'url', 'price', 'icon']
widgets = {
'description': Textarea(attrs={
'cols': 80,
'rows': 4,
'class': 'form-control'
}),
}
表单的生成非常简单,只需按照以下方式进行操作:
<form class="form-horizonal" name="uploadform" enctype="multipart/form-data" method="post">
{% csrf_token %}
{{ form }}
<div class="controls">
<button type="submit" class="btn">Upload</button>
</div>
</div>
</form>
这是我在此处使用的视图:
def publish(request):
if request.method == 'POST':
form = PublishForm(request.POST, request.FILES)
if form.is_valid():
g = form.save(commit=False)
g.developer = request.user.username
g.save()
profile = UserProfile.objects.get(user=request.user)
profile.owned_games.add(g)
profile.save()
return render(request, 'shop/published.html')
else:
form = PublishForm()
return render(request, 'shop/publish.html', {'form': form})
图片的URL是正确的,但图片本身无法上传。即使我手动将图片移动到那里,如果我将其作为HTML图像的源放置,它也不会显示出来。
在settings.py中,我有以下几行代码:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
我该怎么修复这个问题?
static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
? - neverwalkaloner