سؤال

وأنا الأدوات حولها مع جانغو وأنا أتساءل عما إذا كان هناك طريقة بسيطة لإنشاء الارتباط "العودة" إلى الصفحة السابقة باستخدام نظام القالب.

واعتقد انه في أسوأ الحالات يمكنني الحصول على هذه المعلومات من وجوه الطلب في وظيفة عرض، وتمريرها على طول لطريقة تقديم نموذج، ولكن أنا على أمل يمكنني تجنب كل هذا الرمز النمطي بطريقة أو بأخرى.

ولقد دققت مستندات قالب جانغو وأنا لم أر أي شيء يذكر ذلك صراحة.

هل كانت مفيدة؟

المحلول

وحسنا يمكنك تمكين:

'django.core.context_processors.request',

وفي كتلة settings.TEMPLATE_CONTEXT_PROCESSORS وربط من الإحالات ولكن هذا مقرف قليلا ويمكن أن يكسر كل مكان.

ومعظم الأماكن التي كنت تريد هذا (على سبيل المثال صفحة تعديل آخر على SO) لديك كائن حقيقي للربط على ل(في هذا المثال، وآخر) حتى تتمكن من العمل بسهولة على ما ينبغي أن يكون في الصفحة السابقة المناسبة .

نصائح أخرى

والواقع انها go(-1).

<input type=button value="Previous Page" onClick="javascript:history.go(-1);">

وعملت هذا الحل بالنسبة لي:

<a href="{{request.META.HTTP_REFERER}}">Go back</a>

ولكن هذا يضيف سابقا 'django.core.context_processors.request', إلى TEMPLATE_CONTEXT_PROCESSORS في إعدادات المشروع الخاص بك.

<a href="{{request.META.HTTP_REFERER|escape}}">Back</a>

و|escape للخروج من stringage ""

لزر "الخلفي" في أشكال التغيير لجانغو المشرف ما ينتهي بي الأمر به هو مخصص قالب مرشح لتحليل وفك المتغير 'preserved_filters "في القالب. أنا وضعت التالية على قوالب / المشرف / ملف submit_line.html مخصصة:

<a href="../{% if original}../{% endif %}?{{ preserved_filters | decode_filter }}">
    {% trans "Back" %}
</a>

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

from urllib.parse import unquote
from django import template

def decode_filter(variable):
    if variable.startswith('_changelist_filters='):
        return unquote(variable[20:])
    return variable

register = template.Library()
register.filter('decode_filter', decode_filter)

ويمكنك دائما استخدام الخيار العميل الذي هو بسيط جدا:

<a href="javascript:history.go(1)">Back</a>

وعن طريق حل العميل سيكون الحل المناسب.

<a href="javascript:history.go(-1)" class="btn btn-default">Cancel</a>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top