简体   繁体   中英

NoReverseMatch Error - Everything looks ok in my urls.py what am I doing wrong

Have no idea what I'm doing wrong - and I swear it was working a few hours ago.

urls.py:

urlpatterns = [
    path('create', views.create, name='create'),
    path('<int:bet_id>/', views.detail, name='detail'),
    path('<int:bet_id>/wager/', views.wager, name='wager'),
]

this is the link the html template: a href ="{% url 'wager' bet.id %}"

views.py:

def wager(request, bet_id):
    bet = get_object_or_404(Bet, pk=bet_id)
    return render (request, 'bets/wager.html', {'bet':bet})

And here's the error (6 is the specific bet_id for this case)

NoReverseMatch at /bets/6/wager/
Reverse for 'wager' with no arguments not found. 1 pattern(s) tried: ['bets/(?P<bet_id>[0-9]+)/wager/$']

Use non overlapping pattern in url configuration

path('wage_list', views.list_view, name='wage_list'),
path('wage_detail/<int:bet_id>/', views.wage_detail_view, name='wage_detail_view'),

and call in your list view as follows, which will take you to detail view

{% for obj in wage_list %}
<a href="{% url 'wage_detail_view' bet_id=obj.id %}">
{% endfor %}

For me,

bet = get_object_or_404(Bet, pk=bet_id)

It sounds like that the primary key for yor Bet object is named bet_id . May you consider changing {% url 'wager' bet.id %} to {% url 'wager' bet.bet_id %} ?

urls.py :

urlpatterns = [
    path('create', views.create, name='create'),
    path('<int:bet_id>/', views.detail, name='detail'),
    path('wager/<int:pk>', views.wager, name='wager'),
]

views.py :

def wager(request, bet_id):
    bet = get_object_or_404(Bet, pk=bet_id)
    return render (request, 'bets/wager.html', {'bet':bet})

wager.html :

<a href ="{% url 'wager' bet.id %}">Something</a>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM