سؤال

لا أعرف إذا كان ذلك ممكنا ولكن أود إضافة عدد قليل من المعلمات في نهاية عنوان URL باستخدام الوسيطة. هل يمكن القيام به دون إعادة توجيه أي عنوان URL المطلوب؟

بمعنى آخر. نقر المستخدم: ... / some_link والبرامج الوسيطة أعد كتابة ذلك إلى: ... / some_link؟ par1 = 1 & par2 = 2

بطريقة أخرى هي تعديل الرد واستبدال كل رابط HTML ولكنه ليس شيئا أود القيام به.

شكرا

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

المحلول

أعتقد أن هذا يعتمد حقا على مشكلتك وما الذي تحاول القيام به بالضبط.

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

أعتقد أنه قد يساعد إذا شرحت لنا لماذا تحتاج إلى اجتياز هذه المعلومات عبر عنوان URL. لماذا لا تخزن البيانات في الجلسة؟

أعتقد أنك يمكن أن تضيف البيانات إلى كائن الطلب ولكن هذا لا يضيفه إلى عنوان URL.

نصائح أخرى

class YourRedirectMiddleware:

    def process_request(self, request):
        redirect_url = request.path+'?par1=1&par2=2'
        return HttpResponsePermanentRedirect(redirect_url)

ما الذي تحاول إنجازه ولماذا بهذه الطريقة؟

يمكنك أن تفعل ما تريد في الوسيطة. لديك حق الوصول إلى كائن الطلب، يمكنك الحصول على عنوان URL وإعادة التوجيه إلى واحد جديد إذا كنت تريد.

سؤالي سيكون، لماذا تريد أن تفعل هذا؟ إذا كنت بحاجة إلى الحفاظ على معلومات حول الطلب، فإن المكان المناسب للقيام بذلك في الجلسة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top