Как использовать переменную модели в качестве URL? - PullRequest
0 голосов
/ 11 июля 2019

В моем файле models.py я создал переменную с именем hero_name.Например, если героя зовут Барт, я хочу, чтобы URL был ./heroes/Bart

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('<str:hero_name>/', views.heropage, name='heropage'),
]

просмотров.py

from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from .models import Heroes

def index(request):
    return render(request, 'heroes/index.html')

def heropage(request, hero_name):
    get_object_or_404(Heroes, pk=hero_name)
    return render(request, 'heroes/heropage.html')

models.py

from django.db import models



class Heroes(models.Model):
    hero_name = models.CharField(max_length=200)

Ответы [ 3 ]

0 голосов
/ 11 июля 2019

Я думаю, что вам нужно заменить реализацию get_object_or_404 на реализацию, которая получает объект на основе hero_name, а не pk, поскольку в вашей модели hero_name не является вашим первичным ключом.

Надеюсь, это поможет.

0 голосов
/ 11 июля 2019

Непонятно, что именно вы спрашиваете. Но вам, безусловно, нужно использовать соответствующее поле для запроса объекта и передать результат в шаблон:

hero = get_object_or_404(Heroes, hero_name=hero_name)
return render(request, 'heroes/heropage.html', {"hero": hero})
0 голосов
/ 11 июля 2019

Установите поле, которое вы хотите, чтобы primary_key.

class Heroes(models.Model):
    hero_name = models.CharField(primary_key=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...