django管理面板图像字段生成错误的图像路径
我有一个上传到媒体/目录的图像字段。在django管理面板中,它链接到admin/api/character/2/change/media/image.jpg,而不是media/image.jpg。我如何纠正这个问题 编辑:html都是默认的django管理模板。事实上,这没有什么特别的。imagefield是直django。管理模板是直截了当的django。实现完全是直接的django。 settings.py看起来像这样django管理面板图像字段生成错误的图像路径,django,Django,我有一个上传到媒体/目录的图像字段。在django管理面板中,它链接到admin/api/character/2/change/media/image.jpg,而不是media/image.jpg。我如何纠正这个问题 编辑:html都是默认的django管理模板。事实上,这没有什么特别的。imagefield是直django。管理模板是直截了当的django。实现完全是直接的django。 settings.py看起来像这样 13导入操作系统 14 16 BASE_DIR=os.path.dir
13导入操作系统
14
16 BASE_DIR=os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(u文件_u)))
17
23来自战利品追踪者。机密导入机密
24秘密密钥=秘密['SECRET\u KEY']
25
27调试=真
28
29允许的_主机=['*',]
33
34个已安装的应用程序=[
35“喷气式飞机仪表板”,
36“喷气式飞机”,
37“django.contrib.admin”,
38“django.contrib.auth”,
39“django.contrib.contenttypes”,
40“django.contrib.sessions”,
41“django.contrib.messages”,
42“django.contrib.staticfiles”,
43
44“django_扩展”,
45“django_过滤器”,
46“django_用户_代理”,
47“rest_框架”,
48“跟踪分析仪”,
49
50‘空气污染指数’,
51 ]
52
53中间件=[
54'django.middleware.security.SecurityMiddleware',
55'django.contrib.sessions.middleware',
56'django.middleware.common.CommonMiddleware',
57'django.middleware.csrf.CsrfViewMiddleware',
58'django.contrib.auth.middleware.AuthenticationMiddleware',
59'django.contrib.messages.middleware.MessageMiddleware',
60'django.middleware.clickjacking.xframeoptions中间件',
61 ]
62
63 ROOT_URLCONF='loot_tracker.url'
64
65个模板=[
66 {
67“BACKEND”:“django.template.backends.django.DjangoTemplates”,
68“目录”:[],
69“应用程序目录”:正确,
70“选项”:{
71“上下文处理器”:[
72'django.template.context_processors.debug',
73'django.template.context_processors.request',
74'django.contrib.auth.context_processors.auth',
75'django.contrib.messages.context_processors.messages',
76 ],
77 },
78 },
79 ]
80
81 WSGI_应用程序='loot_tracker.WSGI.APPLICATION'
82
87个数据库={
88“默认值”:{
89“引擎”:“django.db.backends.postgresql_psycopg2”,
90“姓名”:“博士后”,
91“用户”:“postgres”,
92“密码”:机密['db_pass'],
93“主机”:“数据库”,
94“端口”:“,
95 }
96 }
97
102身份验证密码验证程序=[
103 {
104“NAME”:“django.contrib.auth.password\u validation.UserAttributesMilarityValidator”,
105 },
106 {
107“NAME”:“django.contrib.auth.password\u validation.MinimumLengthValidator”,
108 },
109 {
110“NAME”:“django.contrib.auth.password\u validation.CommonPasswordValidator”,
111 },
112 {
113“NAME”:“django.contrib.auth.password\u validation.NumericPasswordValidator”,
114 },
115 ]
120
121语言代码='en us'
122
123时区='UTC'
124
125使用_I18N=True
126
127使用\u L10N=True
128
129使用_TZ=True
134
135静态URL='/STATIC/'
136 STATIC\u ROOT=os.path.join(基本目录'public')
137
138 REST_框架={
139“默认分页类”:“rest\u framework.PAGINATION.PageNumberPagination”,
140'页面大小:50
141 }
142
143 CORS\u ORIGIN\u ALLOW\u ALL=真
145
146 GEOIP_PATH=os.PATH.join(基本目录'GEOIP/')
147
148客户ID=机密[“客户ID”]
149客户机密=机密['CLIENT\u SECRET']
~
models.py,注意化身字段
8类字符(models.Model):
9 name=models.CharField(最大长度=20,唯一性=True)
10级=模型.整数字段(默认值=2)
11游戏类=模型。CharField(最大长度=20)
12 guild=models.ForeignKey('guild',blank=True,null=True,on_delete=models.PROTECT)
13 avatar=models.ImageField(上传到class='media/',默认为class='media/tyrone.jpg')
为了简洁起见,admin.py
9类字符admin(admin.ModelAdmin):
10个搜索字段=(“名称”、“游戏类”、“级别”)
11管理员站点注册(字符,字符管理员)
假设:
- 您可以通过
mysite.com/admin/
- 您的服务器中有一个名为
的目录,可以正确上载文件../media/
中的这些文件通过URL../media/
正确提供(例如,如果您在浏览器中手动键入mysite.com/media/
,您将在服务器中获得文件mysite.com/media/myfile.jpg
)../media/myfile.jpg
- 您位于
中,在那里有一个文件字段,您可以上传文件(上传时可以在服务器上看到这些文件)mysite.com/admin/api/character/2/change/
- Django管理员上传后提供的文件的URL/链接是
,而不是mysite.com/admin/api/character/2/change/media/image.jpg
mysite.com/media/image.jpg
- 在Django应用程序的设置中,定义设置
,以便Django知道从何处提供媒体文件。由于您尚未定义该设置,它默认为MEDIA\u URL
,因此实际上它只将文件路径附加到当前URLMEDIA\u URL=''
中的FileField
参数指的是您正在使用的存储器中的目录。在这种情况下,如果您正在将文件上载到服务器中名为upload\u to
的文件夹中,并且设置了/home/mysite/media/
,则上载到该字段的所有文件都将上载到upload\u to='media/'
/home/mysite/media/