اذهب إلى المحتوى

السؤال

نشر (معدل)

في الماضي كان هناك طريقة للحصول على عنوان URL الخاص بأي كائن object في لوحة التحكم وذلك من خلال اسم ملف العرض view مع دالة reverse كالتالي:

reverse('django.contrib.admin.views.main.change_stage', args=['My App', model_name, id_])

لكن يبدو أن هذه الطريقة لم تعد تعمل في الإصدار الحالي من جانغو Django، وأنا أحاول التحديث إلى أحدث إصدار من جانغو Django، وهذه إحدى العقبات التي واجهتها ،لا أجد طريقة للحصول على عنوان URL الخاص بلوحة التحكم تعمل بعد الآن.

كيف يمكنني الحصول على عنوان URL الخاص بلوحة التحكم لكائن معين في جانغو Django؟

تم التعديل في بواسطة Amer Abdallah

Recommended Posts

  • 1
نشر

يمكنك الحصول عنوان URL مباشرة في القالب template، ولا داعي لكتابة أي filter لعمل ذلك. 

<a href="{% url 'admin:index' %}">Admin Index</a>

كما يمكنك تمرير عض المعاملات كالتالي:

<a href="{% url 'admin:posts_comment_add' comment.id  %}">Add comment</a>

أيضًا يمكنك أن تستعمل الدالة reverse ولكن بشكل آخر عن الإصدارات القديمة، على النحو التالي:

from django.urls import reverse
c = Comment.objects.get(...)
change_url = reverse('admin:posts_comment_change', args=(c.id,))

كما يمكنك عمل تابع في النموذج مباشرة لكي ييقوم بإعادة عنوان URL الخاص بالنموذج في لوحة التحكم:

from django.urls import reverse

def get_admin_url(self):
    return reverse(f'admin:{self._meta.app_label}_{self._meta.model_name}_change', args=[self.id])

 

  • 0
نشر

هناك طريقتين بسيطتين:

الطريقة الأولي باستخدام الكود التالي مباشرة:

from django.core.urlresolvers import reverse
def url_to_edit_object(obj):
  url = reverse('admin:%s_%s_change' % (obj._meta.app_label,  obj._meta.model_name),  args=[obj.id] )
  return u'<a href="%s">Edit %s</a>' % (url,  obj.__unicode__())

الطريقة الثانية باستخدام URL reverse مباشرة كالتالي:

{% url 'admin:index' %}

{% url 'admin:polls_choice_add' %}

{% url 'admin:polls_choice_change' choice.id %}

{% url 'admin:polls_choice_changelist' %}

في بعض الأحيان قد ينتج بعض الخطاء اذا كنت تستخدم شكل قديم ل  URL الخاص بلوحة تحكم الأدمن، فاذا وجدت السطر :

(r'^admin/(.*)', admin.site.root),

يجب تغييره للصورة الجديدة ليصبح هكذا:

(r'^admin/', include(admin.site.urls) ),

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...