NoReversMatch ত্রুটিটি কী এবং আমি কীভাবে এটি ঠিক করব?


119

আমার কিছু কোড রয়েছে এবং যখন এটি কার্যকর হয়, এটি একটি NoReversMatch নিক্ষেপ করে বলে:

'My_url_name' এর জন্য আর্গুমেন্ট '()' এবং কীওয়ার্ড আর্গুমেন্ট 'not}' খুঁজে পাওয়া যায়নি জন্য NoReversMatch at / my_url / বিপরীত। প্যাটার্ন চেষ্টা করেছে: []

এর অর্থ কী, এবং আমি এটি সম্পর্কে কী করতে পারি?

উত্তর:


243

NoReverseMatchত্রুটি বলছে যে জ্যাঙ্গো আপনি যে URL টি আপনার ইনস্টল করা অ্যাপ্লিকেশনের URL গুলির কোনো প্রদান করেছেন জন্য একটি মানানসই URL প্যাটার্ন খুঁজে পাচ্ছি না।

NoReversMatch ব্যতিক্রমটি django.core.urlresolvers দ্বারা উত্থাপিত হয় যখন সরবরাহ করা প্যারামিটারের উপর ভিত্তি করে আপনার ইউআরএলকনফের সাথে একটি মিলে যাওয়া URL চিহ্নিত করা যায় না।

এটি ডিবাগ করা শুরু করতে, আপনাকে প্রদত্ত ত্রুটি বার্তাটি সনাক্ত করে আপনাকে শুরু করতে হবে।

  • NoReversMatch at / my_url / এ

    এটি বর্তমানে ইউআরএলটি রেন্ডার করা হচ্ছে, এটিই এই url যা আপনার অ্যাপ্লিকেশনটি বর্তমানে অ্যাক্সেস করার চেষ্টা করছে তবে এতে একটি ইউআরএল রয়েছে যা মিলছে না cannot

  • 'আমার_উর_নাম' এর বিপরীতে

    এটি url এর নাম যা এটি খুঁজে পেতে পারে না

  • যুক্তি (')' এবং সহ

    এটি ইউআরএলকে সরবরাহ করার জন্য অ-কী-ওয়ার্ড আর্গুমেন্ট

  • মূলশব্দ আর্গুমেন্ট '{}' পাওয়া যায় নি।

    এটি কী-ওয়ার্ড আর্গুমেন্টগুলি এটির ইউআরএল সরবরাহ করে

  • প্যাটার্ন চেষ্টা করেছে: []

    এটি সেই নিদর্শন যা এটি আপনার url.py ফাইলগুলিতে খুঁজে পেতে সক্ষম হয়েছিল যা এর সাথে মেলে যাবার চেষ্টা করেছিল

আপনার উত্সের কোডটি বর্তমানে যে url- র সাথে প্রেরণ করা হচ্ছে - url, ভিউ এবং এতে জড়িত কোনও টেম্পলেট সম্পর্কিত প্রাসঙ্গিক দিয়ে শুরু করুন। বেশিরভাগ ক্ষেত্রে, এটি বর্তমানে আপনার বিকাশকারী কোডটির অংশ হবে।

একবার আপনি এটিটি সম্পন্ন করার পরে, কোডটির মাধ্যমে পড়ুন যাতে আপনার জাআরএল তৈরির চেষ্টা করা কোডের লাইনে পৌঁছানো অবধি জাঙ্গো অনুসরণ করবে my_url_name। আবার এটি সম্ভবত এমন এক জায়গায় যেখানে আপনি সম্প্রতি পরিবর্তন করেছেন।

এখন আপনি যে ত্রুটিটি ঘটছে তা আবিষ্কার করেছেন, সমস্যাটি সমাধান করার জন্য ত্রুটি বার্তার অন্যান্য অংশগুলি ব্যবহার করুন।

ইউআরএল নাম

  • কোন টাইপস আছে?
  • আপনি প্রদত্ত নামটি অ্যাক্সেস করার চেষ্টা করছেন এমন ইউআরএল সরবরাহ করেছেন?
  • আপনি যদি অ্যাপ্লিকেশনটির নাম urls.py(উদাহরণস্বরূপ app_name = 'my_app') এ অ্যাপ_নাম সেট করে রেখেছেন বা যদি কোনও অ্যাপ্লিকেশনটিকে কোনও একটি স্থানের সাথে অন্তর্ভুক্ত করেন (উদাহরণস্বরূপ include('myapp.urls', namespace='myapp'), তবে বিপরীত অবস্থায় আপনাকে নামস্থান অন্তর্ভুক্ত করতে হবে, যেমন {% url 'myapp:my_url_name' %}বা reverse('myapp:my_url_name')

যুক্তি এবং কীওয়ার্ড আর্গুমেন্ট

আর্গুমেন্ট এবং কীওয়ার্ড আর্গুমেন্টগুলি প্রদত্ত url এর মধ্যে উপস্থিত এমন কোনও ক্যাপচার গ্রুপগুলির সাথে মেলে যা ()ইউআরএল প্যাটার্নে আশেপাশের বন্ধনীগুলি দ্বারা চিহ্নিত করা যায় against

আপনি যে url টি মিলেছেন তার অতিরিক্ত আর্গুমেন্টের প্রয়োজন মনে করে, ত্রুটি বার্তায় একবার দেখুন এবং প্রদত্ত আর্গুমেন্টগুলির মানটি সঠিক বলে মনে হচ্ছে কিনা প্রথমে একবার দেখুন।

যদি তারা সঠিক না হয়:

  • মানটি অনুপস্থিত বা একটি খালি স্ট্রিং

    এর অর্থ হ'ল আপনি যে মানটি পাস করছেন তার মধ্যে এটির প্রত্যাশা করা মূল্য থাকে না। আপনি কোথায় এর জন্য মূল্য নির্ধারণ করেছেন, একবারের জন্য ব্রেকপয়েন্টগুলি সেট করুন এবং এই মানটি কেন সঠিকভাবে পাস হয় না তা আপনাকে খুঁজে বের করতে হবে।

  • কীওয়ার্ড আর্গুমেন্টে একটি টাইপ রয়েছে

    এটি ইউআরএল প্যাটার্নে, বা আপনি যে url তৈরি করছেন তা সংশোধন করুন।

সেগুলি সঠিক হলে:

  • রিজেক্সটি ডিবাগ করুন

    আপনার প্যাটার্নটি যে ইউআরএলটি আপনি তৈরি করছেন তার সাথে মিলছে কিনা তা পরীক্ষা করার জন্য আপনি রেজেক্সারের মতো কোনও ওয়েবসাইট ব্যবহার করতে পারেন, উপরের রেগেক্স ক্ষেত্রটিতে ইউআরএল প্যাটার্নটি অনুলিপি করুন এবং তারপরে যেকোন ইউআরএল অন্তর্ভুক্ত করার জন্য পাঠ্য অঞ্চলটি ব্যবহার করুন বিরুদ্ধে ম্যাচ করা উচিত।

    সাধারণ ভুল:

    • .ওয়াইল্ড কার্ডের অক্ষর বা অন্য কোনও রেজেক্স অক্ষরের সাথে মিল রয়েছে

      একটি \উপসর্গ সহ নির্দিষ্ট অক্ষরগুলি পালাতে ভুলবেন না

    • কেবল ছোট / বড় হাতের অক্ষরের সাথে মিলে যায়

      পারেন ব্যবহার করার চেষ্টা করুন a-Zবা \wপরিবর্তে a-zবাA-Z

  • আপনি যে প্যাটার্নটির সাথে মিলছেন তা পরীক্ষার ধরণগুলির মধ্যে অন্তর্ভুক্ত রয়েছে কিনা তা পরীক্ষা করুন Check

    যদি এটি এখানে না থাকে তবে এটি সম্ভব যে আপনি নিজের অ্যাপটিকে INSTALLED_APPSসেটিং এর মধ্যে অন্তর্ভুক্ত করতে ভুলে গিয়েছেন (বা এর মধ্যে থাকা অ্যাপগুলির ক্রমটি INSTALLED_APPSদেখার প্রয়োজন হতে পারে)

জ্যাঙ্গো সংস্করণ

জাজানো ১.১০-তে, অজগর পথ দ্বারা একটি url বিপরীত করার ক্ষমতা সরিয়ে দেওয়া হয়েছিল। পরিবর্তে নামযুক্ত পথটি ব্যবহার করা উচিত।


আপনি যদি এখনও সমস্যাটি সনাক্ত করতে অক্ষম হন, তবে একটি নতুন প্রশ্ন জিজ্ঞাসা করতে নির্দ্বিধায় আপনি কী চেষ্টা করেছেন, কী কী গবেষণা করেছেন (আপনি এই প্রশ্নের সাথে লিঙ্ক করতে পারেন) এবং তারপরে প্রাসঙ্গিক কোডটি অন্তর্ভুক্ত করুন ইস্যু - আপনি যে url টি মিলছেন, কোনও প্রাসঙ্গিক url প্যাটার্ন, ত্রুটি বার্তার অংশ যা জাজানো ম্যাচ করার চেষ্টা করেছিল এবং সম্ভবত INSTALLED_APPSপ্রযোজ্য ক্ষেত্রে সেটিংস প্রদর্শন করে।


11
অবশেষে আমাদের কাছে
প্রচলিত

আপনি কি দয়া করে জাজানো ১.১০ এর নামকৃত পথটি বিস্তারিতভাবে বর্ণনা করতে পারেন?
ageষি পাউডেল

2
হ্যাঁ, set app_name in the app's urls.py (e.g. app_name = 'my_app') কথাটি হল
সি কে

আমি এই লাইভ রেজেক্স পরীক্ষকটিকে আরও সহায়ক বলে মনে করি: regex101.com
obotezat

NoReversMatch এই দুর্দান্ত টিউটোরিয়াল জন্য আপনাকে ধন্যবাদ! আমি আমার সমস্যাটি বাছাই করতে সক্ষম হয়েছি।
newmachines_xyz

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