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

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

Amer Abdallah

السؤال

في الماضي كان هناك طريقة للحصول على عنوان 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) ),

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المشكلة لديك في عناوين url ذات التنسيق القديم في ملف urls.py الخاص بك, سوف تجده بهذا الشكل

(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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...