我正在尝试创建对我的个人资料的访问,但我的模型属性之一 (profile_picture) 为空,这导致我的个人资料页面崩溃。我已经设置了blank=True,它早些时候可以工作,但从那以后它就停止工作了,我不明白为什么。如果我进入 django admin 并手动添加配置文件,那么我可以再次访问我的配置文件,一切正常。我想我的问题是,为什么即使 profile_pic 属性为空,我也无法查看我的个人资料?不应该blank=True管这个吗?
模型.py
from __future__ import unicode_literals
from django.db import models
from django.contrib.auth.models import User
from django.db.models.signals import post_save
# Create your models here.
class UserProfile(models.Model):
user = models.OneToOneField(User)
description = models.CharField(max_length=100, default='')
city = models.CharField(max_length=100, default='')
website = models.URLField(default='')
phone = models.IntegerField(default=0)
profile_picture = models.ImageField(upload_to='profile_pics', blank=True)
def __str__(self):
return self.user.username
Run Code Online (Sandbox Code Playgroud)
视图.py
def edit_user_profile(request):
if request.method == 'POST':
form = EditUserProfileForm(request.POST, instance=request.user.userprofile)
if form.is_valid():
form.save()
return redirect('/accounts/profile')
else:
form = …Run Code Online (Sandbox Code Playgroud) 需要明确的是,我尝试过自己研究这个,但由于我对 Django 还是很陌生,我无法理解这里的解决方案。我也阅读了文档,但我不明白我做错了什么。我无法将位于“ad_pictures”目录中的图像显示在 HTML 中。
这是我的代码:
设置.py
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
Run Code Online (Sandbox Code Playgroud)
urls.py(项目)
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^accounts/', include('accounts.urls')),
url(r'^classifieds/', include('classifieds.urls')),
] +static(settings.MEDIA_URL, document_ROOT=settings.MEDIA_ROOT)
Run Code Online (Sandbox Code Playgroud)
urls.py(分类应用程序)
from django.conf.urls import url
from . import views
app_name = 'classifieds'
urlpatterns = [
url(r'^create/', views.create, name='create'),
url(r'^latestads/', views.latestads, name='latestads'),
]
Run Code Online (Sandbox Code Playgroud)
模型.py
class Post(models.Model):
title = models.CharField(max_length=150)
price = models.CharField(max_length=100)
body = …Run Code Online (Sandbox Code Playgroud)