Python 媒体文件中的React和Django路由问题
当我使用Python 媒体文件中的React和Django路由问题,python,django,reactjs,Python,Django,Reactjs,当我使用re_路径('.*',index,name='index')无法路由到我的媒体位置时,当我使用path('/',index,name='index')时,我的react应用程序路由不起作用。 那我该怎么办 from django.contrib import admin from django.urls import path , include,re_path from .views import index from django.conf.urls.static import st
re_路径('.*',index,name='index')
无法路由到我的媒体位置时,当我使用path('/',index,name='index')
时,我的react应用程序路由不起作用。
那我该怎么办
from django.contrib import admin
from django.urls import path , include,re_path
from .views import index
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('api/bookdetails/', include('backend.api.urls', 'api')),
re_path('.*', index , name='index')
]
if settings.DEBUG:
urlpatterns+=static(settings.STATIC_URL , document_root=settings.STATIC_ROOT)
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
setting.py
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "/static")
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "frontend/build/static")
]
MEDIA_URL = '/images/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'images')
数据表单api是
{
"user": "exist",
"password": "valid",
"userdetails": {
"user_name": "laxman1006",
"full_name": "ajay nagpal",
"user_email": "Laxman@9451",
"college_name": "iitd",
"city": "luckonow",
"country": "india",
"profile_img": "/images/profile_image/laxman1006/laxman1006.jpg"
}
}
这是我的序列化程序
class UserdetailsSerializer(serializers.ModelSerializer):
'''user details seriailizer '''
class Meta:
model = Userinfo
fields = ['user_name','full_name','user_email','college_name','city','country','profile_img']
在
settings.py
文件和url.py
文件中更改它,如下所示:
settings.py:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static')
STATICFILES_DIR = os.path.join(BASE_DIR, '/static')
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
URL.py:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('api/bookdetails/', include('backend.api.urls', 'api')),
]
if settings.DEBUG:
urlpatterns+=static(settings.STATIC_URL , document_root=settings.STATIC_ROOT)
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
编辑:
将此添加到您的模型中UserInfo
:
models.py:
def get_image_url(self):
img = self.profile_img
if img:
return img.image.url
else:
return None
serializers.py:
class UserdetailsSerializer(serializers.ModelSerializer):
'''user details seriailizer '''
profile_img = seriailizer.SerializerMethodField()
class Meta:
model = Userinfo
fields = ['user_name','full_name','user_email','college_name','city','country','profile_img']
def get_profile_img(self, obj):
request = self.context.get('request')
profile_img = obj.get_image_url()
return request.build_absolute_uri(profile_img)
我改成了这个,现在它开始工作了
由于该行处理我所有的url请求,我的媒体文件url也由该行处理,所以我只是更改了序列,现在它工作了
from django.contrib import admin
from django.urls import path,include,re_path
from .views import index
from django.conf.urls.static import static
from django.conf.urls import url
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('api/bookdetails/', include('backend.api.urls', 'api')),
]
# urlpatterns += static(settings.MEDIA_URL,document_root= settings.MEDIA_ROOT)
if settings.DEBUG:
urlpatterns+=static(settings.STATIC_URL , document_root=settings.STATIC_ROOT)
urlpatterns+= static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns+= [re_path('.*', index , name='index')]
它工作了一秒钟,我不知道为什么,但现在同样的问题无法加载图像,而在我的服务器日志中,响应是200。您可以共享您的api数据吗?哪些api数据?您为
图像请求的数据
。如果您可以在bookdetail
api中以http
协议的形式共享您请求的全部数据,那就太好了。编辑后,我想显示图像,即profile\img