URL не переходит на правильный номер в Django - PullRequest
0 голосов
/ 26 сентября 2019

models.py

from django.db import models


class Profile(models.Model):
    name=models.CharField(max_length=20 )
    age=models.IntegerField()

    def __str__(self):
        return self.name

class Like(models.Model):
    user=models.ForeignKey(Profile,on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    like=models.IntegerField(default=0)

    def __str__(self):
        return self.choice_text

views.py

from django.shortcuts import render
from .models import Profile, Like
# Create your views here.

def index(request):
    all_name=Profile.objects.all()
    context={'all_name':all_name}

    return render(request, 'database/index.html',context)

def detail(request, profile_id):

    all_likes=Like.objects.get(pk=profile_id)
    return render(request, 'database/detail.html', {'all_likes':all_likes})

index.html

  <h1>hey</h1>
       {% for name in all_name %}
        <li><a href="{% url 'database:detail' user.id %}">{{ name.name }}</a></li>
      {% endfor %}

detail.html

{{all_likes}}

urls.py

from django.urls import path

from . import views

app_name='database'

urlpatterns = [
    path('index/', views.index, name='index'),
    path('<int:profile_id>/', views.detail, name='detail'),

]

сейчас http://127.0.0.1:8000/database/index/ создает два спискаitem,

, но когда я нажимаю на оба, я перенаправляю на http://127.0.0.1:8000/database/1/.

http://127.0.0.1:8000/database/2/ работает вручную, но не при нажатии.Не удалось выяснить ошибку в коде.

1 Ответ

0 голосов
/ 26 сентября 2019

Вы передаете все объекты в HTML:

all_name = Profile.objects.all()

и включаете цикл for в HTML, который вы использовали

{% for name in all_name %}

Здесь:

<li><a href="{% url 'database:detail' user.id %}">{{ name.name }}</a></li>

вы используетеuser.id вместо name.id.

Использование:

<li><a href="{% url 'database:detail' name.id %}">{{ name.name }}</a></li>

Затем он будет использовать идентификатор объекта в цикле for и получит правильный URL-адрес.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...