জঙ্গো আর্গুমেন্ট '()' এবং কীওয়ার্ড আর্গুমেন্টগুলির সাথে বিপরীত '{।' পাওয়া যায় নি


144

হাই আমার একটি উত্সাহজনক সমস্যা আছে।

আমার কাছে এর মতো একটি url প্যাটার্ন রয়েছে:

# mproject/myapp.urls.py

url(r'^project/(?P<project_id>\d+)/$','user_profile.views.EditProject',name='edit_project'),

এটি ব্রাউজারে ভাল কাজ করে তবে পরীক্ষার জন্য, যখন আমি শেলটিতে এটি করি:

from django.test import Client
from django.core.urlresolvers import reverse

client= Client()
response = client.get(reverse('edit_project'), project_id=4)

আমি আতঙ্কিত হই:

NoReverseMatch: Reverse for 'edit_project' with arguments '()' and keyword arguments '{}' not found.

আমি এখানে কি মিস করছি?


মধ্যে সর্বশেষ জ্যাঙ্গো , বিপরীত URL গুলি থেকে আমদানি করা হয়। অর্থাত্from django.urls import reverse
suhailvs

উত্তর:


261

আপনাকে নির্দিষ্ট করতে হবে project_id:

reverse('edit_project', kwargs={'project_id':4})

এখানে ডক


1
আপনি কীভাবে কোনও টেমপ্লেটের মধ্যে এটি করবেন তাও সম্ভবত অন্তর্ভুক্ত করতে পারেন?
গেরশম

1
দস্তাবেজের উদাহরণ রয়েছে
miki725

চ্যামের মতো কাজ করেছেন!
মুহাম্মদ হাসিব

6

@ Miki725 এর সমাধানটি একদম সঠিক। বিকল্পভাবে, আপনি যদি এই argsবৈশিষ্ট্যটির বিপরীতে ব্যবহার করতে চান kwargsতবে আপনি কেবল নিজের কোডটি নিম্নরূপে সংশোধন করতে পারেন:

project_id = 4
reverse('edit_project', args=(project_id,))

এর উদাহরণ ডকুমেন্টেশনে পাওয়া যাবে । এটি মূলত একই জিনিসটি করে তবে বৈশিষ্ট্যগুলি আর্গুমেন্ট হিসাবে পাস করা হয়। মনে রাখবেন যে কোনও আর্গুমেন্ট পাস হয়েছে তার বিপরীত হওয়ার আগে একটি মান নির্ধারণ করা দরকার। কেবলমাত্র সঠিক নেমস্পেস ব্যবহার করুন, যা এই ক্ষেত্রে 'edit_project'


1
আমি এর ব্রেভিটি পছন্দ করি।
কক্কেল

2

অ্যাক্টিভেশন লিঙ্ক উত্পন্ন করার জন্য যখন বিপরীতটি ব্যবহার করার চেষ্টা করেছি এবং অবশ্যই ইমেলের মাধ্যমে এটি প্রেরণ করার চেষ্টা করেছি তখন এই সমস্যাগুলি আমাকে বড় মাথাব্যথা দেয়। সুতরাং আমি টেস্ট.পি থেকে মনে করি এটি একই হবে। এটি করার সঠিক উপায়টি নিম্নলিখিত:

from django.test import Client
from django.core.urlresolvers import reverse

#app name - name of the app where the url is defined
client= Client()
response = client.get(reverse('app_name:edit_project', project_id=4)) 

1
আমি এই চেষ্টা করেছি, এটি কাজ করে না। @ miki725- এর উত্তরটি সঠিক।
ড্যানিয়েল ভ্যান ফ্লাইম্যান

1
আমি বিশ্বাস করি একটি ব্রেস ভুল জায়গায় রয়েছে: প্রতিক্রিয়া = ক্লায়েন্ট.জেট (বিপরীত ('সম্পাদনা_প্রজেক্ট', প্রকল্প_আইডি = 4))
উইম

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.