如何将模型变量用作url?

时间:2019-07-11 00:35:55

标签: django

在我的models.py文件中,我创建了一个名为hero_name的变量。例如,如果英雄名称是Bart,我希望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'),
]
  

views.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 :(得分:0)

我认为您需要用一种基于get_object_or_404而非hero_name获取对象的方法来替换pk的实现,因为在模型中,hero_name是不是您的主键。

我希望这会有所帮助。

答案 1 :(得分:0)

不清楚您要问什么。但是,您当然需要使用相关字段来查询对象,并将结果传递给模板:

hero = get_object_or_404(Heroes, hero_name=hero_name)
return render(request, 'heroes/heropage.html', {"hero": hero})

答案 2 :(得分:-1)

将您想要的字段设置为primary_key。

class Heroes(models.Model):
    hero_name = models.CharField(primary_key=True)