Seite 1 von 1

Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 02:03
von chrjs
Hallo Zusammen,

nach dem ich nun eine halbe Ewigkeit mit Apache und mod_wsgi gekämpft habe, funktioniert das nun anscheienend so weit, dass er erkennt, welches Directory er per wsgi/django ansteuern soll. (Hab durch die Architektur noch nicht so ganz durchgeblickt.) Ich bin hierfür nach diesem Tutorial vorgegangen: http://blog.stannard.net.au/2010/12/11/ ... ntu-10-04/

Das Problem ist nun folgendes.
Meine urls.config funktioniert Lokal wunderbar über 127.0.0.1:8000/Quotes/

Wenn ich das ganze nun auf meinem Server ansehen möchte über meineurl.de/Quotes funktioniert es nicht.

Code: Alles auswählen

Page not found (404)
Request Method:	GET
Request URL:	http://meineurl.de/Quotes/

Using the URLconf defined in Quotes.urls, Django tried these URL patterns, in this order:
^Quotes/$
^Quotes/search/$
^Quotes/admin/
^static/(?P<path>.*)$
^Quotes/(?P<quote_id>\d+)/$
The current URL, , didn't match any of these.
Da hängt es bei mir leider.

Meine sites-enabled/quotes Datei sieht wie folgt aus:

Code: Alles auswählen

<VirtualHost *:80>
 
    ServerName meineurl.de
    DocumentRoot /srv/www/Quotes
 
    <Directory /srv/www/Quotes>
        Order allow,deny
        Allow from all
    </Directory>
 
    WSGIDaemonProcess chris processes=2 threads=15 display-name=%{GROUP}
    WSGIProcessGroup chris
    WSGIScriptAlias /Quotes /srv/www/Quotes/apache/django.wsgi
</VirtualHost>
Ein weiteres (kleineres) Problem, ist die Tatsache, dass wenn ich http://www.meineurl.de/Quotes (mit www.) ansurfe kommt ein normaler 404 Error, nicht der von Django. Das liegt wohl, wie ich heraus gefunden habe am ServerName. Welche Änderung muss ich tätigen, dass ich sowohl mit www. als auch ohne www. die selbe Seite ansurfe?

Danke im Voraus.

Gruß,
Chris

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 12:36
von /me
chrjs hat geschrieben:

Code: Alles auswählen

<VirtualHost *:80>
 
    ServerName meineurl.de
    [...]
</VirtualHost>
Welche Änderung muss ich tätigen, dass ich sowohl mit www. als auch ohne www. die selbe Seite ansurfe?

Code: Alles auswählen

<VirtualHost *:80>
    ServerName meineurl.de
    ServerAlias www.meineurl.de
    [...]
</VirtualHost>

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 12:42
von chrjs
Danke, das funktioniert schon mal. Jetzt geht es nur noch um das eigentliche Problem. ;)

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 12:50
von /me
chrjs hat geschrieben:Danke, das funktioniert schon mal. Jetzt geht es nur noch um das eigentliche Problem. ;)
Ja dann. Ich finde die Angabe "WSGIScriptAlias /Quotes /srv/www/Quotes/apache/django.wsgi" ungewöhnlich. Ich mappe eigentlich immer auf das Root-Verzeichnis.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 12:53
von chrjs
Ah, so funktioniert es.

Jetzt hab ich nur das Problem, dass wenn ich www.meineurl.de aufrufe einen Django 404 Error bekomme. Mein Ziel ist es eigentlich für jedes "Projekt" einen Unterordner anzulegen, wo auch nur das jeweilige "Projekt" ausgeführt wird...

Z.b
www.meineurl.de/blog -> Wordpress
www.meineurl.de/Quotes -> Quotes
www.meineurl.de/Short -> Linkskürzen
www.meineurl.de -> Irgendeine Übersichtsseite z.B

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 14:52
von Leonidas
Naja, dann musst du das "Quotes" am Anfang deiner URL-Conf entfernen.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 16:34
von chrjs
Dann gibt es doch aber das Problem, dass die url www.meineurl.de/Quotes nicht in der URL Config drin ist.

Code: Alles auswählen

Page not found (404)
Request Method:	GET
Request URL:	http://meineurl.de/Quotes/
Using the URLconf defined in Quotes.urls, Django tried these URL patterns, in this order:
^/$
^/search/$
^/admin/
^static/(?P<path>.*)$
^/(?P<quote_id>\d+)/$
The current URL, Quotes/, didn't match any of these.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 16:49
von Leonidas
Ja, jetzt musst du natürlich den WSGIScriptAlias auf den vorherigen Wert zurücksetzen.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 17:20
von chrjs
Warscheinlich verstehe ich es nicht so ganz.

Also, meine urls.py sieht so aus:

Code: Alles auswählen

urlpatterns = patterns('',
    (r'^/$', views.all_quotes),
    (r'^/search/$', views.quote_search),
    (r'^/admin/', include(admin.site.urls)),
    (r'^static/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
    url(r'^/(?P<quote_id>\d+)/$', views.entry_detail)
Und die wsgi Zeile sieht nun so aus:

Code: Alles auswählen

 WSGIScriptAlias /Quotes /srv/www/Quotes/apache/django.wsgi
So habe ich es verstanden.

Nun bekomme ich allerdings wenn ich www.meineurl.de/Quotes aufrufe wieder den Django 404 Error.

Code: Alles auswählen

Page not found (404)
Request Method:	GET
Request URL:	http://meineurl.de/Quotes/
Using the URLconf defined in Quotes.urls, Django tried these URL patterns, in this order:
^/$
^/search/$
^/admin/
^static/(?P<path>.*)$
^/(?P<quote_id>\d+)/$
The current URL, , didn't match any of these.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 17:24
von BlackJack
@chrjs: Welches Muster sollte denn Deiner Meinung nach hier greifen? Häng an die URL mal einen / an, *dann* sollte das erste Muster zutreffen.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 17:36
von chrjs
Damit lande ich auch wieder beim 404 Error.

Was meinst du mit 'welches Muster soll greifen'?

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 17:48
von Leonidas
The current URL, , didn't match any of these.
Das zwischen den Kommas ist das was er als "Pfad" matcht. Es gibt bei dir in deiner URLconf aber keine Regel die leere Strings matcht, nur welche die mit einem Slash anfangen. Daher der Fehler.

Re: Django URL Config

Verfasst: Mittwoch 5. Januar 2011, 17:57
von chrjs
Ah, okay. Danke. :)