latest news

2008-11-09 19:33:42

Umstellung und Migration

2 Comments

unanswered questions

2008-10-30 13:34:21

Syndication Feed-Problem

0 Replies

2008-11-17 16:49:19

dynamische urlpatterns...

2 Replies

2008-12-22 02:46:20

Fragen zu pagination ~~

1 Replies

Board » Django das Framework » Probleme & Fragen » Probleme mit der Url

Hey zusammen,
gar nicht so leicht ein Django Forum zu finden :)
Also hab vor einer Woche angefangen und hab mir das Djangobuch durchgelesen und natuerlich auch gleich mal ein Projekt gestartet. In diesen Projekt moechte ich Alle Laender der Welt darstellen. Und da kommt auch schon mein Problem.
Also das soll folgendermassen ablaufen:
Alle Kontinente (Regions) werden angezeigt ->
Auswahl von Kontinent -> Url mit Kontinent (zB localohost:8000/world/asia/)
Und nun sollen alle Laender in Asia angezeigt werden. Naechste Url waere dann zB localohost:8000/world/Asia/India/

Wie stell ich das an ? Mein bisheriger Code bringt mir immer folgende 404 Meldung:
Request Method: GET
Request URL: http://127.0.0.1:8000/world/Asia/

No Region matches the given query.


Ich geh davon aus, dass etwas in der urls.py mit den regular expressions nicht stimmt. Da kenn ich mich nicht so aus und hab es einfach kopiert.

models.py im app world
from django.db import models

class Region(models.Model):
    name = models.CharField(max_length=30, unique=True)
    slug = models.SlugField(unique=True, prepopulate_from=('name',))

    def __str__(self):
        return self.name

    class Meta:
        ordering = ["name"]

    class Admin:
        pass
    

class Country(models.Model):
    region = models.ForeignKey(Region)
    name = models.CharField(max_length=30, unique=True)
    slug = models.SlugField(unique=True, prepopulate_from=('name',))
    currency = models.CharField(max_length=30)
    flag = models.ImageField(upload_to='/flags')
    
    def __str__(self):
        return self.name

    class Meta:
        ordering = ["name"]

    class Admin:
        pass


urls.py im app world
from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^$', 'worldguide.world.views.region'),
    (r&#039;^(?P<region_slug>- A-Za-z0-9+/)$&#039;, &#039;worldguide.world.views.countries&#039;),
)


views.oy im app world
from django.shortcuts import render_to_response
from world.models import Region
from world.models import Country
import django.shortcuts as shortcuts

def region(request):
    region_list = Region.objects.all()
    return render_to_response(&#039;world.html&#039;, {&#039;region_list&#039;: region_list})

def countries(request, region_slug):
    region = shortcuts.get_object_or_404(Region, slug=region_slug)
    country_list = Country.objects.filter(region=region)
    return render_to_response(&#039;countries.html&#039;, {&#039;regions&#039;:region, &#039;country_list&#039;:country_list})


world.html auszug mit Links zu Kontinente
<ul>
	{% for regions in region_list %}
		<li><a href="http://127.0.0.1:8000/world/{{ regions.slug }}">{{ regions.name }}</a></li>
	{% endfor %}
</ul>


Danke schon mal im Vorraus !
Ahh nachdem ich ewig an der urls.py rumgemacht hab, habe ich endlich entdeckt was falsch war. Ich hab die Regular Expression falsch kopiert ...

Richtig waere
CODE(r&#039;^(?P<region_slug>- A-Za-z0-9+)/$&#039;, &#039;worldguide.world.views.countries&#039;),/CODE
Funktioniert es den jetzt, nach deiner Änderung?
Jap alles genau so wie es soll :).
Vielleicht sollte ich mich mal ein bisschen mit den Regular Expressions beschaeftigen, da sie ja doch recht nuetzlich und maechtig sind ...