Django 2.1 - Django shortcut functions

Django शॉर्टकट फ़ंक्शन




django

Django शॉर्टकट फ़ंक्शन

पैकेज django.shortcuts सहायक कार्यों और कक्षाओं को इकट्ठा करता है जो MVC के कई स्तरों को "स्पैन" करते हैं। दूसरे शब्दों में, ये कार्य / कक्षाएं सुविधा के लिए नियंत्रित युग्मन का परिचय देते हैं।

render()

render(request, template_name, context=None, content_type=None, status=None, using=None) [source]

किसी दिए गए संदर्भ शब्दकोश के साथ दिए गए टेम्पलेट को HttpResponse है और उस प्रदान किए गए पाठ के साथ एक HttpResponse ऑब्जेक्ट देता है।

Django एक शॉर्टकट फ़ंक्शन प्रदान नहीं करता है जो एक TemplateResponse देता है क्योंकि TemplateResponse का निर्माता render() के समान ही सुविधा render() करता है।

आवश्यक तर्क

request
इस प्रतिक्रिया को उत्पन्न करने के लिए उपयोग की जाने वाली अनुरोध वस्तु।
template_name
टेम्पलेट नामों के उपयोग या अनुक्रम के लिए एक टेम्पलेट का पूरा नाम। यदि कोई अनुक्रम दिया जाता है, तो पहले मौजूद टेम्पलेट का उपयोग किया जाएगा। टेम्प्लेट कैसे पाए जाते हैं, इस बारे में अधिक जानकारी के लिए टेम्प्लेट लोडिंग प्रलेखन देखें।

वैकल्पिक तर्क

context
टेम्पलेट संदर्भ में जोड़ने के लिए मूल्यों का एक शब्दकोश। डिफ़ॉल्ट रूप से, यह एक खाली शब्दकोश है। यदि शब्दकोश में कोई मूल्य कॉल करने योग्य है, तो टेम्पलेट को रेंडर करने से पहले दृश्य इसे कॉल करेगा।
content_type
परिणामस्वरूप दस्तावेज़ के लिए MIME प्रकार का उपयोग करें। DEFAULT_CONTENT_TYPE सेटिंग के मान के लिए डिफ़ॉल्ट।
status
प्रतिक्रिया के लिए स्थिति कोड। 200 चूक।
using
टेम्पलेट लोड करने के लिए उपयोग करने के लिए एक टेम्पलेट इंजन का NAME

उदाहरण

निम्न उदाहरण MIME प्रकार अनुप्रयोग / xHTML + xml के साथ टेम्पलेट myapp/index.html प्रस्तुत करता है:

from django.shortcuts import render

def my_view(request):
    # View code here...
    return render(request, 'myapp/index.html', {
        'foo': 'bar',
    }, content_type='application/xhtml+xml')

यह उदाहरण इसके बराबर है:

from django.http import HttpResponse
from django.template import loader

def my_view(request):
    # View code here...
    t = loader.get_template('myapp/index.html')
    c = {'foo': 'bar'}
    return HttpResponse(t.render(c, request), content_type='application/xhtml+xml')

render_to_response()

render_to_response(template_name, context=None, content_type=None, status=None, using=None)

संस्करण 2.0 के बाद से पदावनत।

इस फ़ंक्शन ने render() की शुरूआत से पहले render() और इसी तरह काम करता है सिवाय इसके कि वह प्रतिक्रिया में request उपलब्ध नहीं कराता है।

redirect()

redirect(to, permanent=False, *args, **kwargs) [source]

पास किए गए तर्कों के लिए एक उपयुक्त URL पर HttpResponseRedirect को लौटाता है।

तर्क हो सकते हैं:

  • एक मॉडल: मॉडल का get_absolute_url() फ़ंक्शन कहा जाएगा।
  • संभवतः तर्कों के साथ एक दृश्य नाम: reverse() का उपयोग नाम को रिवर्स-रिज़ॉल्यूशन करने के लिए किया जाएगा।
  • एक निरपेक्ष या सापेक्ष URL, जिसका उपयोग पुनर्निर्देशित स्थान के लिए किया जाएगा।

डिफ़ॉल्ट रूप से अस्थायी पुनर्निर्देशन जारी करता है; permanent=True पास करना permanent=True स्थाई पुनर्निर्देश जारी करना permanent=True है।

उदाहरण

आप कई तरीकों से redirect() फ़ंक्शन का उपयोग कर सकते हैं।

  1. किसी वस्तु को पास करके; उस ऑब्जेक्ट का get_absolute_url() विधि को रीडायरेक्ट URL का पता लगाने के लिए बुलाया जाएगा:

    from django.shortcuts import redirect
    
    def my_view(request):
        ...
        obj = MyModel.objects.get(...)
        return redirect(obj)
    
  2. एक दृश्य के नाम को पारित करके और वैकल्पिक रूप से कुछ स्थिति या कीवर्ड तर्क; URL reverse() विधि का उपयोग करके हल हो जाएगा:

    def my_view(request):
        ...
        return redirect('some-view-name', foo='bar')
    
  3. रीडायरेक्ट करने के लिए एक हार्डकोड URL पास करके:

    def my_view(request):
        ...
        return redirect('/some/url/')
    

    यह भी पूर्ण URL के साथ काम करता है:

    def my_view(request):
        ...
        return redirect('https://example.com/')
    

डिफ़ॉल्ट रूप से, redirect() एक अस्थायी पुनर्निर्देशन लौटाता है। उपरोक्त सभी रूप एक permanent तर्क को स्वीकार करते हैं; यदि True सेट किया जाता है तो एक स्थायी पुनर्निर्देशन वापस कर दिया जाएगा:

def my_view(request):
    ...
    obj = MyModel.objects.get(...)
    return redirect(obj, permanent=True)

get_object_or_404()

get_object_or_404(klass, *args, **kwargs) [source]

किसी दिए गए मॉडल प्रबंधक पर कॉल get() , लेकिन यह मॉडल के DoesNotExist अपवाद के बजाय Http404 उठाता है।

आवश्यक तर्क

klass
एक Model वर्ग, एक Manager , या एक QuerySet उदाहरण जिसमें से ऑब्जेक्ट प्राप्त करना है।
**kwargs
लुकअप पैरामीटर, जो get() और filter() द्वारा स्वीकृत प्रारूप में होना चाहिए।

उदाहरण

निम्न उदाहरण को MyModel से 1 की प्राथमिक कुंजी के साथ वस्तु MyModel :

from django.shortcuts import get_object_or_404

def my_view(request):
    obj = get_object_or_404(MyModel, pk=1)

यह उदाहरण इसके बराबर है:

from django.http import Http404

def my_view(request):
    try:
        obj = MyModel.objects.get(pk=1)
    except MyModel.DoesNotExist:
        raise Http404("No MyModel matches the given query.")

सबसे आम उपयोग का मामला एक Model को पारित करना है, जैसा कि ऊपर दिखाया गया है। हालाँकि, आप एक QuerySet उदाहरण भी दे सकते हैं:

queryset = Book.objects.filter(title__startswith='M')
get_object_or_404(queryset, pk=1)

उपरोक्त उदाहरण थोड़ा सा है क्योंकि यह करने के बराबर है:

get_object_or_404(Book, title__startswith='M', pk=1)

लेकिन यह उपयोगी हो सकता है यदि आप queryset चर को कहीं और से पारित किया जाता है।

अंत में, आप एक Manager उपयोग भी कर सकते हैं। यदि आपके पास कोई कस्टम प्रबंधक है, तो यह उदाहरण के लिए उपयोगी है:

get_object_or_404(Book.dahl_objects, title='Matilda')

आप related managers का भी उपयोग कर सकते हैं:

author = Author.objects.get(name='Roald Dahl')
get_object_or_404(author.book_set, title='Matilda')

ध्यान दें: जैसा कि get() , एक से अधिक ऑब्जेक्ट मिलने पर एक MultipleObjectsReturned अपवाद को उठाया जाएगा।

get_list_or_404()

get_list_or_404(klass, *args, **kwargs) [source]

किसी सूची में दिए गए मॉडल प्रबंधक पर filter() का परिणाम देता है, यदि परिणामी सूची खाली है तो Http404

आवश्यक तर्क

klass
एक Model , Manager या QuerySet उदाहरण जिसमें से सूची प्राप्त करना है।
**kwargs
लुकअप पैरामीटर, जो get() और filter() द्वारा स्वीकृत प्रारूप में होना चाहिए।

उदाहरण

निम्न उदाहरण को MyModel से सभी प्रकाशित ऑब्जेक्ट MyModel :

from django.shortcuts import get_list_or_404

def my_view(request):
    my_objects = get_list_or_404(MyModel, published=True)

यह उदाहरण इसके बराबर है:

from django.http import Http404

def my_view(request):
    my_objects = list(MyModel.objects.filter(published=True))
    if not my_objects:
        raise Http404("No MyModel matches the given query.")