【问题标题】:Genering dedicated urls with slugs使用 slug 生成专用 url
【发布时间】:2014-12-09 09:52:22
【问题描述】:

我过去曾问过如何从您所说的 ID 开始生成具有相似特征的 url,最好使用 slugs 来做到这一点。这次我想用 slugs 生成 dinamics url。我的目标是获得这个结果:

我有五种产品,我在 models.py 中命名为卡片(Ysera、Neltharion、Nozdormu、Alexstrasza、Malygos)。我需要每个产品的相应网址:

localhost:8000/card/ysera

localhost:8000/card/neltharion

localhost:8000/card/nozdormu ...等

我尝试生成这些 url,但我不知道我是否很好地应用了命令,或者我不知道如何指定 id 卡,如卡的主要名称(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(我有一个应用程序的 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,但我的学习中有很多差距

如果我忽略了一些问题,请提前向我道歉。

谢谢!!

【问题讨论】:

  • 1) 您的卡片类别中似乎没有名为“slug”的字段。 2)您收到错误消息吗?如果某些东西不起作用,您应该更好地描述它是如何失败的:)
  • 除了描述错误之外,我想知道我的配置的哪些部分有故障,或者另一方面我忽略了哪些内容。我知道我的配置中有很多错误,我在这里尝试遵循两个答案,但这是我的结果:(
  • 只是一个建议:尝试以特定的错误消息开始此类问题,并将您的代码作为额外信息包含在内。在您的情况下,您似乎忘记在模型定义中包含 slug field 。 (您试图通过 slug 获取卡片,但您的卡片模型没有定义 slug 字段。)
  • 否则您要求进行代码审核,这可能更适合codereview.stackexchange.com 而不是 StackOverflow。

标签: python django django-views url-routing slug


【解决方案1】:

这一行:

tarj = card.objects.get(slug=slug, id=id_tarj)

尝试加载card 对象,其中id 字段设置为id_tarjslug 字段设置为slug。您的模型没有名为 slug 的字段。您将需要添加一个。

SlugField - https://docs.djangoproject.com/en/dev/ref/models/fields/#slugfield 是一个很好的候选人

您需要确保您的 slug 字段在每种情况下都包含正确的值。

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 2015-12-19
    • 1970-01-01
    • 2017-06-27
    • 2014-10-02
    • 2021-10-11
    • 2012-06-26
    • 2011-07-15
    • 2016-09-26
    相关资源
    最近更新 更多