Django 正在尝试发送参数

Django 正在尝试发送参数,django,django-models,django-views,django-template-filters,Django,Django Models,Django Views,Django Template Filters,我正在尝试获取我在shop.html页面中的一些产品的专用URL。我有五种产品被我命名为“卡片”:(伊塞拉、内萨里奥、诺兹多尔姆、阿列克斯特拉萨、马利戈斯)。每张卡都应该有一个专用的url(localhost:8000/card/1/,localhost:8000/card/2/,等等)。但django没有获得该url,而是向我发送了以下消息: 不存在/card/1/card匹配查询处的DOESNOTEXTIST 我在我的views.py中正确地导入了类模型“card”,事实上我只是在过滤器函数

我正在尝试获取我在shop.html页面中的一些产品的专用URL。我有五种产品被我命名为“卡片”:(伊塞拉、内萨里奥、诺兹多尔姆、阿列克斯特拉萨、马利戈斯)。每张卡都应该有一个专用的url(localhost:8000/card/1/,localhost:8000/card/2/,等等)。但django没有获得该url,而是向我发送了以下消息:

不存在/card/1/card匹配查询处的DOESNOTEXTIST

我在我的views.py中正确地导入了类模型“card”,事实上我只是在过滤器函数中使用card来获取shop.html中的所有产品。请查看my 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 index(request):
    return render_to_response('home/index.html',context_instance=RequestContext(request))

def landing(request):
    return render_to_response('home/landing.html',context_instance=RequestContext(request))

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,id_tarj):    
    tarj = card.objects.get(id=id_tarj) 
    ctx = {'card':tarj}
    return render_to_response('home/singleCard.html',ctx,context_instance=RequestContext(request))
这里是my url.py:

url(r'^card/(?P<id_tarj>.*)/$','dracoin.apps.home.views.singleCard',name='vista_single_card'),
My singleCard.html:

{% extends 'base.html' %}
{% block title %} Tarjeta {{card.nombre}} {% endblock %}
{% block content %}

<h1>{{ card.nombre }}</h1><br> 
<p> {{ card.descripcion }}</p>        

{% endblock %}
使用这个我获得了我的网站的空白页

如果我忽略了什么,请提前向我道歉

谢谢


回答wolendranh,我有一个应用程序的url.py和主url.py

最近我在我身边学习django,我不明白在这种情况下如何定义自己的一致标识符

如果它仍然有用,我在这里放了一个由错误生成的回溯:

Environment:


Request Method: GET
Request URL: http://localhost:8000/card/1/

Django Version: 1.7
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
 'django.contrib.admindocs',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'dracoin.apps.synopticup',
 'dracoin.apps.home')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/home/draicore/project/multilevel/local/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/draicore/project/dracoin/dracoin/apps/home/views.py" in singleCard
  24.       tarj = card.objects.get(id=id_tarj) 
File "/home/draicore/project/multilevel/local/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
  92.                 return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/draicore/project/multilevel/local/lib/python2.7/site-packages/django/db/models/query.py" in get
  357.                 self.model._meta.object_name)

Exception Type: DoesNotExist at /card/1/
Exception Value: card matching query does not exist.

请原谅我延长这个问题。

我有几件事要澄清: 1.您的项目中是否有一个URL.py文件?或者为每个应用程序单独设置。 如果您有一个单独的url,比如“your_project/card/url”,并且它包含在main url.py中,那么您不应该在url中使用“card/”。因为Django已经知道该请求是针对该应用程序的

r'^card/(?P<id_tarj>.*)/$' -> r'^(?P<id_tarj>.*)/$'
r'^card/(?P.*)/$”->r'^(?P.*)/$'
  • 如果它位于main url.py中,请尝试替换:

    r'^card/(?P<id_tarj>.*)/$' 
    
    r'^card/(?P.*)/$'
    

    r'^card/(?p\d+)/$'


  • 注:我的评论名声不好,所以我加了一个答案。抱歉。

    正如karthikr在评论中所说,您没有id=1的卡


    这可能是因为您以前删除并重新创建了一张卡。id是一个自动增量字段,这意味着数据库不会重用已删除的id。如果您希望您的项目具有一致的标识符,您可以始终使用该标识符在URL中查询它,那么您可能应该将其定义为一个显式整数字段(使用除
    id
    之外的另一个名称),并对其进行查询。更好的方法是使用slug而不是数字ID。

    这意味着您的数据库中没有ID为1的卡对象。打开一个shell,看看数据库中的对象的有效ID是什么。也可以尝试设置Web服务器上显示的错误,这将对您有很大帮助——或者检查apache?错误日志
    r'^card/(?P<id_tarj>.*)/$' -> r'^(?P<id_tarj>.*)/$'
    
    r'^card/(?P<id_tarj>.*)/$'