2017-10-14 2 views
0

Je tente de mettre en place un site web sur cookeicutter, j'ai créé une nouvelle application appelée "robots" et ajouté une classe appelée Trade and Unit dans les modèles. J'ai créé deux vues basées sur la classe à l'intérieur de views.py; détail et liste vue. La vue détaillée du commerce fonctionne bien et dirige vers le commerce correct, mais lorsque j'essaie de visiter la page html qui fait référence à la vue de la liste de commerce, la page renvoie l'erreur suivante.django.urls.exceptions.NoReverseMatch Classer Liste Vues

django.urls.exceptions.NoReverseMatch 
django.urls.exceptions.NoReverseMatch: Reverse for 'trade-detail' with 
arguments '('1',)' and keyword arguments '{}' not found. 0 pattern(s) 
tried: [] 

Je crois que quelque chose ne va pas avec le get_absolute_url, parce que quand je le retirer de la model.py l'erreur de la liste ci-dessus va loin et la page rend, mais les liens ne fonctionnent pas.

La plupart de mon code est de ce tutoriel: https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Generic_views

Models.py

from django.db import models 
from datetime import date 
from django.urls import reverse 
from django.urls import reverse_lazy 
from django.conf import settings 
import uuid 


class Unit(models.Model): 

    TRADE_UNIT = (
     ('ETH', 'Ethereum'), 
     ('BTC', 'Bitcoin'), 
     ('LTC', 'Litecoin'), 
     ('IOT', 'IOTA'), 
     ('OMG', 'OmiseGo'), 
     ('BCH', 'BitcoinCash'), 

    ) 

    sell = models.CharField(max_length=3, choices=TRADE_UNIT, blank=True, default='ETH', help_text='Currency to Sell') 
    buy = models.CharField(max_length=3, choices=TRADE_UNIT, blank=True, default='BTC', help_text='Currency to Buy') 

    def get_absolute_url(self): 
     """ 
     Returns the url to access a particular instance. 
     """ 
     return reverse('unit-detail', args=[str(self.id)]) 

    def __str__(self): 
     """ 
     String for representing the Model object. 
     """ 
     return '%s, %s' % (self.sell, self.buy) 


    class Meta: 
     ordering = ['sell'] 



class Trade(models.Model): 
    title = models.CharField(max_length=200) 
    unit = models.ForeignKey(Unit, on_delete=models.SET_NULL, blank=True, null=True) 

    def get_absolute_url(self): 
     """ 
     Returns the url to access a particular book instance. 
     """ 
     return reverse('trade-detail', args=[str(self.id)]) 

    def __str__(self): 
     """ 
     String for representing the Model object. 
     """ 
     return self.title 



    class Meta: 
     db_table = 'bots_trade' 
     ordering = ['title'] 

Views.py

from django.shortcuts import render 
import datetime 
from django.shortcuts import get_object_or_404 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
from django.views import generic 
from .models import Trade, Unit, TradeInstance 
import uuid 
# Create your views here 



class TradeDetailView(generic.DetailView): 
    model = Trade 

    redirect_field_name = 'redirect_to' 

class TradeListView(generic.ListView): 

    model = Trade 

    redirect_field_name = 'redirect_to' 

class UnitDetailView(generic.DetailView): 
    model = Unit 

    redirect_field_name = 'redirect_to' 

class UnitListView(generic.ListView): 
    model = Unit 

    redirect_field_name = 'redirect_to' 

def index(request): 
    """ 
    View function for home page of site. 
    """ 

    return render(
     request, 
     'bots/index.html', 
    ) 
app

bots: urls.py

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^trades/$', views.TradeListView.as_view(), name='trades'), 
    url(r'^trade/(?P<pk>\d+)$', views.TradeDetailView.as_view(), name='trade-detail'), 
    url(r'^units/$', views.UnitListView.as_view(), name='unit'), 
    url(r'^unit/(?P<pk>\d+)$', views.UnitDetailView.as_view(), name='unit-detail'), 


] 

Tracecback EDIT2

Ceci est le code du modèle commercial:

def get_absolute_url(self): 
    """ 
    Returns the url to access a particular book instance. 
    """ 
    return reverse('trade-detail', args=(self.id,)) 

/pause

django.urls.exceptions.NoReverseMatch 
django.urls.exceptions.NoReverseMatch: Reverse for 'trade-detail' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 

Traceback (most recent call last) 
File "/usr/local/lib/python3.5/site-packages/django/contrib/staticfiles/handlers.py", line 63, in __call__ 
return self.application(environ, start_response) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/wsgi.py", line 170, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 124, in get_response 
response = self._middleware_chain(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/utils/deprecation.py", line 136, in __call__ 
response = self.get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 44, in inner 
response = response_for_exception(request, exc) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 94, in response_for_exception 
response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info()) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 136, in handle_uncaught_exception 
return debug.technical_500_response(request, *exc_info) 
File "/usr/local/lib/python3.5/site-packages/django_extensions/management/technical_response.py", line 6, in null_technical_500_response 
six.reraise(exc_type, exc_value, tb) 
File "/usr/local/lib/python3.5/site-packages/six.py", line 693, in reraise 
raise value 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner 
response = get_response(request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 217, in _get_response 
response = self.process_exception_by_middleware(e, request) 
File "/usr/local/lib/python3.5/site-packages/django/core/handlers/base.py", line 215, in _get_response 
response = response.render() 
File "/usr/local/lib/python3.5/site-packages/django/template/response.py", line 109, in render 
self.content = self.rendered_content 
File "/usr/local/lib/python3.5/site-packages/django/template/response.py", line 86, in rendered_content 
content = template.render(context, self._request) 
File "/usr/local/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render 
return self.template.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 208, in render 
return self._render(context) 
File "/usr/local/lib/python3.5/site-packages/django/test/utils.py", line 94, in instrumented_test_render 
return self.nodelist.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render 
bit = node.render_annotated(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated 
return self.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render 
return compiled_parent._render(context) 
File "/usr/local/lib/python3.5/site-packages/django/test/utils.py", line 94, in instrumented_test_render 
return self.nodelist.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render 
bit = node.render_annotated(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated 
return self.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/defaulttags.py", line 315, in render 
return nodelist.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 994, in render 
bit = node.render_annotated(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated 
return self.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/defaulttags.py", line 209, in render 
nodelist.append(node.render_annotated(context)) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated 
return self.render(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 1044, in render 
output = self.filter_expression.resolve(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 711, in resolve 
obj = self.var.resolve(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 852, in resolve 
value = self._resolve_lookup(context) 
File "/usr/local/lib/python3.5/site-packages/django/template/base.py", line 915, in _resolve_lookup 
current = current() 
File "/app/vicki/bots/models.py", line 50, in get_absolute_url 
return reverse('trade-detail', args=(self.id,)) 
File "/usr/local/lib/python3.5/site-packages/django/urls/base.py", line 91, in reverse 
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))) 
File "/usr/local/lib/python3.5/site-packages/django/urls/resolvers.py", line 392, in _reverse_with_prefix 
(lookup_view_s, args, kwargs, len(patterns), patterns) 
django.urls.exceptions.NoReverseMatch: Reverse for 'trade-detail' with arguments '(1,)' and keyword arguments '{}' not found. 0 pattern(s) tried: [] 
+0

Utilisez-vous urls namespaced? – mariodev

Répondre

0

Reverse for 'trade-detail' with arguments '('1',)'

Vous passez l'argument comme str pas entier. Selon urls.py de bots que vous avez à passer id en entier non chaîne, donc supprimer str de méthode get_absolute_url de Trade modèle

def get_absolute_url(self): 
    """ 
    Returns the url to access a particular book instance. 
    """ 
    return reverse('trade-detail', args=(self.id,)) 
+0

Salut Neeraj, après avoir modifié mon code à votre commentaire, je reçois maintenant builtins.TypeError TypeError: Argument _reverse_with_prefix() après * doit être un itératives, pas int – Zalkota

+0

ajouter votre retraçage mis à jour en question –

+0

D'accord, il est ajouté au fond – Zalkota