Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 媒体文件中的React和Django路由问题_Python_Django_Reactjs - Fatal编程技术网

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