मैंने अभी Django 1.11 से 2.0 में अपग्रेड किया है। मेरे पास एक Django एप्लिकेशन के लिए ये यूआरएल हैं:

urlpatterns = [
    url(r'^logout/$', views.logout, name='logout'),
    url(r'^$', views.home, name='home'),
    url(r'^pledge/(?P<group_id>[0-9]+)/$',
        views.pledge, name='pledge_by_group'),
    # I have more urls, but I have omitted them since they are not relevant
    url(r'^404/$', views.bad_request, name='404')
]

अपग्रेड करने के बाद, मैंने जाँच की कि सब कुछ ठीक है। फिर, मैं बदल गया:

url(r'^pledge/(?P<group_id>[0-9]+)/$', views.pledge, name='pledge_by_group')

प्रति:

url('pledge/<int:group_id>/', views.pledge, name='pledge_by_group'),

सरलीकृत URL रूटिंग सिंटैक्स< का लाभ उठाने के लिए /a> Django 2.0 में। हालांकि, जब मैं http://localhost:8000/pledges/group/7/ तक पहुंचने का प्रयास करता हूं तो मुझे निम्न त्रुटि मिल रही है:

NoReverseMatch at /pledges/group/7/ 'pledge_by_group' के लिए कीवर्ड तर्क '{'group_id': '7'}' के साथ रिवर्स नहीं मिला। 1 पैटर्न (ओं) की कोशिश की: ['प्रतिज्ञा//']

यह मेरा विचार है:

@login_required(redirect_field_name='')
def group_pledge(request, group_id):
    """Some docstring..."""
    # Some code that is not relevant to the problem

    context = {
        'pledge_url':  reverse('pledges:pledge_by_group',
                        kwargs={'group_id': group_id}),
    } # context has more values, but for practical reasons I don't include them

    return render(request, 'pledges/home.html', context)

त्रुटि के अनुसार, समस्या इस पंक्ति में है:

reverse('pledges:pledge_by_group', kwargs={'group_id': group_id})

क्या कोई मुझे बता सकता है कि क्या हो रहा है और इसे कैसे ठीक किया जाए?

2
lmiguelvargasf 17 मई 2018, 02:24

1 उत्तर

सबसे बढ़िया उत्तर