无法在Apache、Windows上加载statics、Django rest_框架

2024-10-01 17:29:39 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我正在尝试学习django,并尝试通过mod_wsgi在Apache服务器上制作一个具有Angular和django REST后端的应用程序。目前,我有一个静态文件的问题。当应用程序使用Django工具在127.0.0.1:8000上运行时,一切正常,但当我通过Apache加载它时,我缺少静态,因此输出看起来非常原始:

enter image description here

我试图用manage.py collectstatics来收集静态数据,试图用python dirs中的statics定义dir-什么都没有:

STATIC_URL = '/static/'

STATIC_ROOT = os.path.join(BASE_DIR, 'DjangoApp/static/')

STATICFILES_DIRS = [
    'C:/Users/<user>/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/rest_framework/static',
]

Apache虚拟主机设置:

^{pr2}$

在httpd.conf公司名称:

LoadModule wsgi_module "C:/Users/Genesi5/AppData/Local/Programs/Python/Python36-32/lib/site-packages/mod_wsgi/server/mod_wsgi.cp36-win32.pyd"

<IfModule wsgi_module>
    LoadFile "C:/Users/Genesi5/AppData/Local/Programs/Python/Python36-32/python36.dll"
    WSGIPythonHome "C:/Users/Genesi5/AppData/Local/Programs/Python/Python36-32"
    WSGIPassAuthorization On
</IfModule>

你能提出解决办法吗?


Tags: djangomod应用程序wsgiapachelocal静态static
2条回答

您必须在Apache2.conf中声明许多内容才能使用mod_wsgi

WSGIScriptAlias / /path_to_wsgi.py
WSGIPythonPath /path_to_your_project
Alias /static/ /path_to_your_static_directory

<Directory /path_to_your_static_directory>
        Require all granted
</Directory>

<Directory /path_to_your_project_directory>
        <Files wsgi.py>
                #Options Indexes FollowSymLinks
                #Require all granted
                #SetEnvIfNoCase Host .+ VALID_HOST
                Order deny,allow
                Allow from all
                #Allow from env=VALID_HOST
        </Files>
</Directory>

<Directory />
       Options FollowSymLinks
       AllowOverride None
       Require all denied
</Directory>

<Directory /usr/share>
       AllowOverride None
       Require all granted
</Directory>

<Directory /var/www/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

<Directory /srv/>
       Options Indexes FollowSymLinks
       AllowOverride None
       Require all granted
</Directory>

这是Linux的一个例子,但在Windows中是一样的;)

所以,我不得不在虚拟主机设置中添加额外的别名,然后它就可以工作了:

<VirtualHost 127.0.0.1:8081>
    ##ServerAdmin webmaster@dummy-host.example.com
    WSGIScriptAlias / "D:/genesi5/Coding/www/django/wsgi_handler.wsgi"
    DocumentRoot "D:/genesi5/Coding/www/django"
    ServerName DjangoApp
    ServerAlias DjangoApp
    ErrorLog "logs/myapp/error.log"
    CustomLog "logs/myapp/access.log" common
    Alias /static "C:/Users/Genesi5/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/rest_framework/static"
    <Directory "C:/Users/Genesi5/AppData/Local/Programs/Python/Python36-32/Lib/site-packages/rest_framework/static">
        Require all Granted
    </Directory>
    <Directory "D:/genesi5/Coding/www/django">
        AllowOverride All
        Require all Granted
    </Directory>
</VirtualHost>

相关问题 更多 >

    热门问题