জ্যাঙ্গোতে একটি টেমপ্লেটের ভিতরে অনুমতি পরীক্ষা করুন


90

আমি কি জাঙ্গোর কোনও টেম্পলেটের ভিতরে আথ অ্যাপ্লিকেশনটির অনুমতি চেক ব্যবহার করতে পারি? (সুবিধাপ্রাপ্ত ব্যবহারকারীদের জন্য আমি টেম্পলেটটির শেষে একটি সাধারণ ফর্ম প্রদর্শন করতে চাই)

এবং আরও গুরুত্বপূর্ণ বিষয়, আমি কি এটি আদৌ করা উচিত বা এটি কোনও "জ্যাঙ্গো পথ" নয়?


আমার মতো লোকদের জন্য, যারা পরে এটিকে হোঁচট খায়, জাজানো 1.5 এর লিঙ্কটি কিছুটা পরিবর্তন করা হয়েছিল। এই ইউআরএলটিতে এখন ডক্সগুলিতে তথ্য পাওয়া যাবে: ডকস.ডজ্যাঙ্গোপ্রজেক্ট /en/1.5/topics/auth/default/#perifications মূল উত্তরের কিছুই সত্যিই পরিবর্তিত হয়নি, তবে এটি কেবল একটি নতুন ইউআরএল :)
জিউডোনাক্স

উত্তর:


187

আপনি যদি টেমপ্লেটগুলিতে অনুমতিগুলি পরীক্ষা করতে চান তবে নীচের কোডটি যথেষ্ট হবে:

{% if perms.app_label.can_do_something %}
<form here>
{% endif %}

যেখানে মডেল সেই মডেলটিকে বোঝায় যেটির জন্য ফর্মটি দেখার জন্য ব্যবহারকারীর অনুমতি প্রয়োজন।

আরও উদাহরণের জন্য https://docs.djangoproject.com/en/stable/topics/auth/default/#perifications দেখুন।

বর্তমানে লগ ইন থাকা ব্যবহারকারীর অনুমতিগুলি টেম্পলেট ভেরিয়েবলে সঞ্চিত রয়েছে {{ perms }}

(এটির জন্য নিম্নলিখিত কনটেক্সট প্রসেসরের সক্ষম হওয়া প্রয়োজন django.contrib.auth.context_processors.auth:)


14
মনে রাখবেন যে আপনি যদি কোনও সুপারভাইজার হিসাবে লগ ইন করেন perms.app_label.foobarতবে আপনি অনুমতিটির নামটি ভুল বানান করলেও সর্বদা সত্য হবে।
ফ্লিম 18

4
এছাড়াও এখানে নোট করুন যে "ক্যান_ডো_সোমিংথিং" হ'ল অনুমতিটির নাম, সুতরাং আপনাকে অনুমতিের নামের সাথে "ক্যান" উপসর্গ যুক্ত করার দরকার নেই। যেমন, perms.my_app.add_object
করিম সোনবোল

11

জ্যাঙ্গো ২.০ + তে পরীক্ষা করা হয়েছে

আপনি যদি আপনার টেমপ্লেটে (.html) লগ ইন করা ব্যবহারকারীদের সমস্ত অনুমতি দেখতে চান তবে মুদ্রণ করুন:

{{ perms.app_name }}

বা

{{ perms }}

ব্যবহারকারীর অনুমতি আছে কিনা তা পরীক্ষা করতে, ব্যবহার করুন:

{% if perms.app_name.change_model_name_lower_cased %}

যেমন:

{% if perms.Utilization.change_invoice %}

এখানে: ব্যবহারটি আমার অ্যাপের নাম। চালান একটি মডেল নাম।

মনে রাখবেন যে সাধারণভাবে, 4 ধরণের অনুমতি থাকবে:

  • পরিবর্তন করুন [উদাহরণস্বরূপ ব্যবহারকারীর। পরিবর্তন_প্রজেক্টমেল]
  • [উদাহরণস্বরূপ ব্যবহার। ভিউ_ইনভয়েস] দেখুন
  • [উদাহরণস্বরূপ ব্যবহার। ডিলিট_ইনভোসিকেটাইপ] মুছুন
  • যোগ করুন [উদ্যানের ব্যবহার.এডডি_ইনভোসাইটিপ]

এছাড়াও, আপনি যদি কোনও ব্যবহারকারী তার নিজস্ব গোষ্ঠীগুলির কারণে সমস্ত অনুমতি দেখতে চান তবে জাঙ্গো শেলটি চালু করুন ...

user = User.objects.get(username='somename')
user.get_group_permissions()

এখানে, তালিকাভুক্ত সমস্ত অনুমতিগুলি তার সাথে সম্পর্কিত গ্রুপগুলির কারণে।


4
হ্যাঁ. সত্যই: নিম্নতর। সাপ_সেস না। {{পারমস} with সহ অনুমতিগুলি দেখার ধারণাটি দুর্দান্ত, তাই আমি মনে করি এটি সেরা উত্তর।
মিরেক


0

এই পোস্টটি 'অনার্থ' করার জন্য দুঃখিত তবে আমার অনুমতি সম্পর্কিত কোনও সমস্যা আছে আমার পোস্টটি দেখুন: জ্যাঙ্গো: অনুমতি ব্যবহার করে টেম্পলেটে যুক্তিটি ভালভাবে প্রয়োগ করা হয়নি

অরিন্দম যেমন এই ধারণার সাথে খুব সাবলীল হতে পারে আমি আশা করি তিনি বা অন্য কেউ আমাকে সহায়তা করতে পারে

আমার টেম্পলেটে আমি যখন correct {পারমস} for সন্ধান করি তখন মান সঠিক হয় এমনকি যদি অনুমতিগুলি প্রয়োগ হয় না তবে এটি কোনও বস্তু ফেরত দেয় তবে আমি of {perms.randomization.can_randomize look look সন্ধান করি তবে অনুমতিগুলির তালিকা নয়}} এটি মিথ্যা (বা সত্য) ফিরে আসে ) এটাই আমার মানটির নামটিকে র‌্যান্ডমাইজেশনের নাম দেওয়া ভাল মান এবং আমি র্যান্ডমাইজেশন মডেলগুলিতে (মেটা ব্যবহার করে) can_randomize অনুমতিটি সংজ্ঞায়িত করি যা আমার র‌্যান্ডমাইজেশন অ্যাপ্লিকেশনটির অংশ

আমি সেটিংস.পিটি যাচাই করে নিই, তবে সমস্ত সিম ঠিক আছে


হাই স্লেটার আমি আজকে এই দেখেছি। স্পষ্টতই অনেক দেরি হয়ে গেছে। তবে আপনি যদি কাউকে রেফার করতে চান তাই তিনি মেসেজটি পান, এই মন্তব্য বিভাগে বার্তাটির সাথে একটি @ নাম যুক্ত করুন।
অরিন্দম রায়চৌধুরী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.