2016-04-10 3 views
0

Dies ist mein erstes Mal hier.Django - Erstellen Sie Seiten zusammen mit den Objekten mit der gleichen Vorlage

Ich bin mit einem kleinen Problem in Django stecken. Ich schreibe eine Webseite für einen Zwinger und ich habe ein Modell für Hunde. Diese Hunde erscheinen auf der Startseite, nachdem sie in der Admin-Seite erstellt wurden. Ich brauche es, damit Sie nach dem Klicken auf ein Hundebild auf der Startseite zu ihrem Profil (mit dem Namen des Hundes in der URL) gelangen können, das für jede eine Vorlage verwenden sollte.

Hier ist mein Code in Modellen, Ansichten und Urls:

models.py

class dog(models.Model): 
    name = models.CharField(max_length=30, blank=False, null=True) 
    main_image = models.ImageField(upload_to='dogs', blank=False, null=True) 
    MALE = 'ML' 
    FEMALE = 'FM' 
    gender_list = (
     (MALE, 'male'), 
     (FEMALE, 'female'), 
     ) 
    gender = models.CharField(max_length=2, choices=gender_list, default='gender') 
    description = models.TextField(max_length=500, blank=False, null=True) 
    birthday = models.DateField(default=datetime.today, blank=True) 
    slug = AutoSlugField(populate_from='name') 

views.py

def home(request): 
    dog_list = list(dog.objects.all()) 
    template = 'home.html' 
    return render(request, template, {'dogs' : dog_list}) 

def dog_view(request, slug): 
    dog_view = get_object_or_404(dog, slug=slug) 
    return render(request, 'profile.html', {'dog_view' : dog_view}) 

urls.py

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
    url(r'^dogs/(?P<slug>[-\w]+)/$', views.dog_view, name='profile'), 
    url(r'^mating/', views.mating_list, name='mating'), 
    url(r'^admin/', admin.site.urls), 
] 

Hause .html

{% for dog in dogs %} 
    <a href="{% url 'profile' %}{{ dog.name }}"> 
    <div class="col-sm-4"> 
    <img class="img-circle img-responsive img-center" src="{{ dog.main_image.url }}" alt=""> 
    <h2 align=center>{{ dog.name }} 
     <p>{{ dog.description }}</p> 
     </div> 
    {% endfor %} 

Ich denke, dass es etwas sehr einfaches sein sollte, obwohl ich über das Internet suchte und nicht finden konnte, wie es möglich ist, dass Seiten automatisch zusammen mit den Hund-Gegenständen erstellt werden.

Vielen Dank im Voraus.

+0

welche Fehler bekommen Sie? – ahmed

+0

Sie möchten, dass jeder Hund eine andere Vorlage hat? Oder möchtest du eine Vorlage verwenden, um jede Hundeseite zu erstellen? –

+0

Die zweite. Ich möchte eine Vorlage verwenden, um die Seite jedes Hundes zu erstellen. –

Antwort

0

Versuchen Sie folgendes:

views.py

def home(request): 
    dog_list = dog.objects.all() 
    template = 'home.html' 
    return render(request, template, {'dogs' : dog_list}) 

def dog_view(request, slug): 
    dog_view = get_object_or_404(dog, slug=slug) 
    return render(request, 'profile.html', {'dog_view' : dog_view}) 

home.html

{% for dog in dogs %} 
    <a href="{% url 'profile' dog.name %}">{{ dog.name }}</a> 
    <div class="col-sm-4"> 
    <img class="img-circle img-responsive img-center" src="{{ dog.main_image.url }}" alt=""> 
    <h2 align=center>{{ dog.name }} 
     <p>{{ dog.description }}</p> 
     </div> 
    {% endfor %} 

urls.py

urlpatterns = [ 
    url(r'^$', views.home, name='home'), 
    url(r'^dogs/(?P<slug>[-\w]+)/$', views.dog_view, name='profile'), 
    url(r'^mating/', views.mating_list, name='mating'), 
    url(r'^admin/', admin.site.urls), 
] 
+0

Es funktioniert immer noch nicht. Die Hunde erscheinen nicht auf der Seite. Ich habe meine home.html zu der Frage hinzugefügt. Es fing auch an, mir NoReverseMatch Fehler zu geben: Reverse für 'Profil' mit Argumenten '()' und Schlüsselwortargumente '{}' nicht gefunden. 1 Muster versucht: ['Hunde/(? P [- \\ w] +)/$'] –

+0

Überprüfen Sie meine editted Lösungen @Alex Star – Tushortz

+0

Vielen Dank! Es funktioniert schließlich. Jetzt muss ich herausfinden, wie man jede Hundeseite verstehen lässt, welches Hund-Objekt verwendet werden soll, um Informationen zu erhalten. Aber ich werde versuchen, das alleine zu machen. Danke nochmal, @Tuskortz. –

Verwandte Themen