Пытаюсь отправить параметры

Я пытаюсь получить специальные URL-адреса некоторых продуктов, которые есть на моей странице shop.html. У меня есть пять продуктов, которые я назвал «картами»: (Изера, Нелтарион, Ноздорму, Алекстраза, Малигос). У каждой карты должен быть выделенный URL (localhost: 8000 / card / 1 /, localhost: 8000 / card / 2 / и т. Д.). но вместо того, чтобы получить этот URL, django запустил мне это сообщение:

DoesNotExist at / card / 1 / card Соответствующий запрос не существует.

Я правильно импортировал "card" модели класса в свой views.py, на самом деле я справедливо использую card в функции фильтра для получения всех товаров в shop.html. пожалуйста, посмотрите мой 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))

вот мой urls.py:

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

Моя импортированная модель:

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

Мой singleCard.html:

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

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

{% endblock %}

Я не знаю, есть ли у меня неправильная ссылка на класс "карты". Но я стараюсь применять другие ответы на этом форуме. Например:

​​В Django как я могу использовать objects.get, но возвращать None, если ничего не найдено?

соответствующий запрос не существует Ошибка в Django

Ошибка Django - соответствующий запрос не существует

Я не знаю, допущу ли я ошибку, применяя эти решения. В том числе пробую:

tarj = card.objects.filter(id=id_tarj)

Используя это, я получаю пустую страницу своего сайта ...

заранее прошу прощения за свой обширный вопрос и если я что-то упускаю.

Спасибо!!


Отвечая на wolendranh, у меня есть urls.py по приложению и основной urls.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.

извините за продление этого вопроса.


person Jhonny    schedule 13.10.2014    source источник
comment
это означает, что в вашей базе данных нет объекта карты с идентификатором 1. откройте оболочку и посмотрите, какие действительные идентификаторы объектов в базе данных   -  person karthikr    schedule 13.10.2014
comment
также попробуйте настроить отображение ошибок на вашем веб-сервере, это вам очень поможет - в качестве альтернативы проверьте apache? журналы ошибок   -  person Martin B.    schedule 13.10.2014


Ответы (2)


Как пишет karthikr в комментарии, у вас нет карты с id = 1.

Вероятно, это связано с тем, что вы ранее удалили и воссоздали карту. Идентификатор - это поле с автоинкрементом, что означает, что база данных не использует повторно удаленные идентификаторы. Если вы хотите, чтобы ваш элемент имел согласованный идентификатор, который вы всегда можете использовать для запроса его в URL-адресе, вам, вероятно, следует определить его как явное IntegerField (используя другое имя, чем id) и вместо этого запросить его. Еще лучше использовать ярлык, а не числовой идентификатор.

person Daniel Roseman    schedule 13.10.2014

Мне нужно уточнить несколько вещей: 1. Есть ли в вашем проекте единственный файл urls.py? или отдельно для каждого приложения. Если у вас есть отдельный «your_project / card / urls», и он включен в основной urls.py, вы НЕ должны использовать «card /» в своем URL-адресе. Потому что Django уже знает, что запрос относится к этому приложению.

r'^card/(?P<id_tarj>.*)/$' -> r'^(?P<id_tarj>.*)/$'
  1. Если он находится в основном urls.py, попробуйте заменить:

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

    to

    г '^ карта / (? P \ d +)) / $'

P.s .: У меня нет репутации для комментариев, поэтому я добавил ответ. Извините.

person wolendranh    schedule 13.10.2014