Ich habe meine Django von Apache mit Vhost bedient. Die Conf-Datei ist die folgendeXsendFile mit Apache und Django
WSGIPythonPath /srv/www/myproject/testproject/
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.betarhombus.com
WSGIScriptAlias//srv/www/testproject/testproject/testproject/wsgi.py
<Directory /srv/www/testproject/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /srv/www/testproject/testproject/static/
Alias /media/ /srv/www/testproject/testproject/media/
<Directory /srv/www/testproject/testproject/static>
Require all granted
</Directory>
<Directory /srv/www/testproject/testproject/media>
Require all granted
</Directory>
</VirtualHost>
ich auf Mediendateien beschränken wollen nur serviert auf speicific loggten Kunden möglich. Also bin ich auf XsendFile gestoßen. Wenn ich es richtig verstehe, was es tut, ist, während du Django hast, die ganze Prüfung für die Mediendatei zu machen, die du liefern willst, wird es dann von Apache als statische Datei bedient. Also die Prozedur ist die folgende, wenn ich richtig rate
- XsendFile aktivieren.
- Ansicht erstellen, die für die Mediendateien Berechtigungen überprüft usw. und dient ihnen
- assoziieren mit url in urls.py Datei
Dann kann ich `verwenden und werden in der Regel wie funktionieren, wenn es unter Verwendung der ursprünglichen serviert wurde Mediendatei-URL Verstehe ich es richtig? Meine Fragen sind die folgenden:
Über 1.activating XSendFile. Sollte dies in der Conf-Datei in meinem Vhost-Tag geschehen? Ist das Setzen von XsendFile ausreichend? Sollte ich die Alias für die Medienrichtlinie und auch den Abschnitt für die Mediendateien entfernen? Ich möchte, dass Mediendateien nur von meiner Ansicht geliefert werden?
Gibt es noch etwas, auf das ich achten sollte?
Edit: Mein Setup ist
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.betarhombus.com
WSGIScriptAlias//srv/www/testproject/testproject/testproject/wsgi.py
XSendFile On
XsendFilePath /srv/www/testproject/testproject/media/
<Directory /srv/www/testproject/testproject/testproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ /srv/www/testproject/testproject/static/
<Directory /srv/www/testproject/testproject/static>
Require all granted
</Directory>
</VirtualHost>
mein urls.py
#for xsendmedia file serving
url(r'^media\/(?P<path>.*)$', 'customer.views.media_xsendfile'),
und meiner Ansicht
def media_xsendfile(request, path):
#here will be checked if user can access media
response = HttpResponse()
response['Content-Type']=''
response['X-Sendfile']= smart_str(os.path.join(settings.MEDIA_ROOT, path))
return response
Mein Problem ist, dass einige der Mediendateien ist geteilt normal und einige sind nicht, und erhalten einen internen Serverfehler
Was meinst du mit 'einige der Mediendateien werden normalerweise geteilt und einige sind nicht '? Könntest du es ein wenig mehr erklären? Verwenden Sie den staff_member_required Decorator? – vsachar