我在过去的时间问过如何生成一个具有类似特征的网址,从你说的ID开始,最好使用slu to来做到这一点。在这个时候,我想要用slugs生成dinamics url。我的目标是获得这个结果:
我有五种产品,我在models.py中指定了卡片(Ysera,Neltharion,Nozdormu,Alexstrasza,Malygos)。我需要每个产品的相应网址:
本地主机:8000 /卡/伊瑟拉
本地主机:8000 /卡/奈萨里奥
localhost:8000 / card / nozdormu ...等。
我尝试生成这些网址,但我不知道我是否做了很好的命令应用,要么我不知道如何指定身份证像卡的主要名称(ysera,neltharion ......) 。我试图按照这个社区中发布的答案稍微盲目一点,这是我的“重新配置”:
这是我的views.py:
from django.shortcuts import render_to_response
from django.template import RequestContext
from dracoin.apps.synopticup.models import card
from dracoin.apps.home.forms import ContactForm,LoginForm
from django.core.mail import EmailMultiAlternatives
from django.contrib.auth import login,logout,authenticate
from django.http import HttpResponseRedirect
def shop(request):
tarj = card.objects.filter(status=True)
ctx = {'tarjetas':tarj}
return render_to_response('home/shop.html',ctx,context_instance=RequestContext(request))
def singleCard(request, slug, id):
try:
tarj = card.objects.get(slug=slug, id=id_tarj)
except ObjectDoesNotExist:
tarj = get_object_or_404(card, id=id_tarj)
return render_to_response('home/singleCard.html',ctx,context_instance=RequestContext(request))
我的urls.py(我有app的urls.py和主urls.py):
url(r'^card/(?P<slug>[-\w]+)/(?P<id_tarj>\d+)/$','dracoin.apps.home.views.singleCard',name='vista_single_card'),
我的models.py:
class card(models.Model):
nombre = models.CharField(max_length=100)
descripcion = models.TextField(max_length=300)
status = models.BooleanField(default=True)
def __unicode__(self):
return self.nombre
我所有卡的常用模板:
{% extends 'base.html' %}
{% block title %} Tarjeta {{card.nombre}} {% endblock %}
{% block content %}
<h1>{{ card.nombre }}</h1><br>
<p> {{ card.descripcion }}</p>
{% endblock %}
我不知道是否发现了我在views.py中构建的slug,我确信urls.py很糟糕,但我不知道如何构建它?
如果我编辑自己的问题以延长它,请原谅我。最近我正在尝试学习django,我的学习中有很多空白
提前道歉我的广泛问题,如果我忽略了什么。
谢谢!
答案 0 :(得分:0)
这一行:
tarj = card.objects.get(slug=slug, id=id_tarj)
尝试加载card
字段设置为id
的{{1}}对象,id_tarj
字段设置为slug
。您的模型没有名为slug
的字段。您需要添加一个。
一个好的候选人是slug
- https://docs.djangoproject.com/en/dev/ref/models/fields/#slugfield
您需要确保您的slug字段在每种情况下都包含正确的值。