জাঙ্গোতে url.py থেকে সরাসরি নাম দেওয়া url প্যাটার্নে পুনর্নির্দেশ করবেন?


127

জ্যাঙ্গোতে, আমি কীভাবে সরাসরি url.py থেকে একটি সাধারণ পুনর্নির্দেশ করতে পারি? স্বভাবতই আমি একটি সুসংহত লোক, ডিআরওয়াই নীতিটির পক্ষে, তাই আমি ইউআরএল কোডিংয়ের চেয়ে হার্ড ইউআরএল নামকরণের ভিত্তিতে লক্ষ্যটি অর্জন করতে চাই।

উত্তর:


193

আপনি জ্যাঙ্গো 1.4 বা 1.5 এ থাকলে আপনি এটি করতে পারেন:

from django.core.urlresolvers import reverse_lazy
from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url=reverse_lazy('my_named_pattern'), permanent=False)),
    ...

আপনি জ্যাঙ্গো ১.6 বা তার বেশি হলে, আপনি এটি করতে পারেন:

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(pattern_name='my_named_pattern', permanent=False)),
    ...

জাজানো ১.৯-এ, এর ডিফল্ট মানটি permanentসত্য থেকে মিথ্যাতে পরিবর্তিত হয়েছিল। এর কারণে permanent, আপনি কীওয়ার্ড যুক্তিটি নির্দিষ্ট না করলে আপনি এই সতর্কতাটি দেখতে পাবেন:

মুছে ফেলা আইডজ্যাঙ্গো 19 সতর্কতা: 'রেডাইরেক্টভিউ.পার্মেন্ট্যান্ট' এর ডিফল্ট মানটি জাজানো ১.৯-এ সত্য থেকে মিথ্যাতে পরিবর্তিত হবে। এই সতর্কতাটি নিঃশব্দ করার জন্য একটি সুস্পষ্ট মান সেট করুন।


18
কেবল একটি নোট, মনে রাখবেন যে রিডাইরেক্টভিউয়ের স্থায়ী = ডিফল্ট হিসাবে সত্য।
ড্যানিয়েল ব্যাকম্যান

8
আপনি সবকিছু পুনর্নির্দেশ করতে পারেন! ভালো লেগেছে:(r'^.*/$', RedirectView.as_view(url='http://newurl.com')),
রাডটেক

3
রিডাইরেক্টভিউতে জ্যাঙ্গো ১.৯ এ ডিফল্ট হিসাবে স্থায়ী = মিথ্যা থাকবে।
মাধ্যাকর্ষণ গ্রেভ

5
উপরের উদাহরণে কেউ 'মাই_মাম_প্যাটার্ন' কী তা ব্যাখ্যা করতে পারে?
জয় মোদি

1
প্রদত্ত প্যাটার্নের নাম ব্যবহার করে কল সময়ে আপনার জন্য বিপরীত কার্যকর pattern_nameকরতে যুক্তিটি পাস করা RedirectView। অন্যান্য দরকারী পরামিতি অন্তর্ভুক্ত permanentএবংquery_string
tutuDajuju

32

এটি আমার পক্ষে কাজ করে।

from django.views.generic import RedirectView

urlpatterns = patterns('',
    url(r'^some-page/$', RedirectView.as_view(url='/')),
    ...

উপরের উদাহরণের '/'অর্থ এটি সূচী পৃষ্ঠায় পুনর্নির্দেশ করবে, যেখানে আপনি কোনও ইউআরএল নিদর্শনও যুক্ত করতে পারেন।


5
শুধু একটি নোট, মনে রাখবেন যে RedirectViewহয়েছে permanent=Trueজ্যাঙ্গো পুরোনো সংস্করণে ডিফল্ট হিসাবে, এবং permanent=Falseজ্যাঙ্গো সংস্করণ> = 1.9 এর ডিফল্ট হিসাবে।
ফ্লিম

20

জ্যাঙ্গো ভি 2 এর জন্য

from django.contrib import admin
from django.shortcuts import redirect
from django.urls import path, include


urlpatterns = [
    # this example uses named URL 'hola-home' from app named hola
    # for more redirect's usage options: https://docs.djangoproject.com/en/2.1/topics/http/shortcuts/
    path('', lambda request: redirect('hola/', permanent=False)),
    path('hola/', include("hola.urls")),
    path('admin/', admin.site.urls),
]

3
@ অালি স্থায়ী পুনঃনির্দেশগুলিতে সাধারণত HTTP কোড 301 থাকে, অস্থায়ী পুনঃনির্দেশগুলিতে সাধারণত কোড 302 থাকে erman স্থায়ী পুনঃনির্দেশগুলি সাইটের স্ট্রাকচারাল পরিবর্তনের ব্রাউজারকে জানাতে ব্যবহৃত হয়। অস্থায়ী পুনঃনির্দেশগুলি লগইনের মতো ডায়নামিক সার্ভার সাইড অ্যাকশনের পরে কোনও নতুন পৃষ্ঠা দেখানোর জন্য নির্দেশ করতে ব্যবহৃত হয়। ডকুমেন্টেশন অনুযায়ী permanent=Falseডিফল্ট। আরও তথ্যের জন্য দয়া করে পড়ুন: ডকস.ডজ্যাঙ্গোপ্রজেক্ট / এএন / ২.১ / টপিক্স / এইচটিটিপি / শর্টকাটস / #redirect developer.mozilla.org/en-US/docs/Web/HTTP/…
গ্লিশিয়টর

9

আপনি রেডাইরেক্টভিউ সমর্থন না করতে পারলে এই উপায়টি জাঙ্গোর পুরানো সংস্করণগুলিতে সমর্থিত

ভিউ.পি-তে

def url_redirect(request):
    return HttpResponseRedirect("/new_url/")

Url.py এ

url(r'^old_url/$', "website.views.url_redirect", name="url-redirect"),

আপনি এটি ব্যবহার করে স্থায়ী করতে পারেন HttpResponsePermanentRedirect


7

আমি সমস্ত 404 গুলি হোম পৃষ্ঠাতে পুনর্নির্দেশের চেষ্টা করছিলাম এবং নিম্নলিখিতগুলি দুর্দান্ত কাজ করেছে:

from django.views.generic import RedirectView
...
under urlpatterns, added:
    url(r'^.*/$', RedirectView.as_view(url='/home/')),
    url(r'^$', RedirectView.as_view(url='/home/')),
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.