मैं अजाक्स को Django अनुप्रयोगों के साथ कैसे एकीकृत करूं?


264

मैं Django के लिए नया हूँ और Ajax के लिए बहुत नया हूँ। मैं एक ऐसी परियोजना पर काम कर रहा हूं, जहां मुझे दोनों को एकीकृत करने की आवश्यकता है। मेरा मानना ​​है कि मैं उन दोनों के पीछे के सिद्धांतों को समझता हूं, लेकिन दोनों को एक साथ अच्छी व्याख्या नहीं मिली है।

क्या कोई मुझे इस बात का त्वरित विवरण दे सकता है कि दोनों को एक साथ एकीकृत करने के साथ कोडबेस को कैसे बदलना चाहिए?

उदाहरण के लिए, क्या मैं अभी भी HttpResponseअजाक्स के साथ उपयोग कर सकता हूं , या क्या मेरी प्रतिक्रियाओं को अजाक्स के उपयोग के साथ बदलना होगा? यदि हां, तो क्या आप इस बात का उदाहरण प्रदान कर सकते हैं कि अनुरोधों की प्रतिक्रियाओं को कैसे बदलना चाहिए? अगर इससे कोई फर्क पड़ता है, तो मैं जो डेटा वापस कर रहा हूं वह JSON है।

जवाबों:


637

हालांकि यह पूरी तरह से एसओ भावना में नहीं है, मुझे यह सवाल बहुत पसंद है, क्योंकि जब मैंने शुरुआत की थी तो मुझे भी यही परेशानी थी, इसलिए मैं आपको एक त्वरित गाइड दूंगा। जाहिर है कि आप उनके पीछे के सिद्धांतों को नहीं समझते हैं (इसे अपराध के रूप में न लें, लेकिन अगर आपने किया तो आप पूछेंगे नहीं)।

Django सर्वर-साइड है । इसका मतलब है, कहते हैं कि एक ग्राहक एक URL पर जाता है, आपके पास एक फ़ंक्शन होता है viewsजो HTML में एक प्रतिक्रिया को देखता है और उसे वापस देता है। चलो इसे उदाहरणों में तोड़ते हैं:

views.py:

def hello(request):
    return HttpResponse('Hello World!')

def home(request):
    return render_to_response('index.html', {'variable': 'world'})

index.html:

<h1>Hello {{ variable }}, welcome to my awesome site</h1>

urls.py:

url(r'^hello/', 'myapp.views.hello'),
url(r'^home/', 'myapp.views.home'),

यह सबसे सरल उपयोगों का एक उदाहरण है। के लिए जा रहे 127.0.0.1:8000/helloसाधन के लिए एक अनुरोध hello(), समारोह के लिए जा रहा 127.0.0.1:8000/homeवापस आ जाएगी index.htmlऔर के रूप में पूछा सभी चर की जगह (आप शायद अब तक यह सब जानते हैं)।

अब बात करते हैं AJAX की । AJAX कॉल क्लाइंट-साइड कोड है जो अतुल्यकालिक अनुरोध करता है। यह जटिल लगता है, लेकिन इसका सीधा मतलब है कि यह पृष्ठभूमि में आपके लिए एक अनुरोध करता है और फिर प्रतिक्रिया को संभालता है। इसलिए जब आप कुछ URL के लिए AJAX कॉल करते हैं, तो आपको वही डेटा मिलता है जो आपको उस स्थान पर जाने वाले उपयोगकर्ता के रूप में मिलेगा।

उदाहरण के लिए, एक AJAX कॉल 127.0.0.1:8000/helloउसी चीज़ को लौटाएगी जैसा कि आप इसे देखने गए थे। केवल इस समय, आपके पास यह जावास्क्रिप्ट फ़ंक्शन के अंदर है और आप इससे निपट सकते हैं, हालांकि आप इसे पसंद करेंगे। आइए एक साधारण उपयोग के मामले को देखें:

$.ajax({
    url: '127.0.0.1:8000/hello',
    type: 'get', // This is the default though, you don't actually need to always mention it
    success: function(data) {
        alert(data);
    },
    failure: function(data) { 
        alert('Got an error dude');
    }
}); 

सामान्य प्रक्रिया यह है:

  1. कॉल URL पर जाता है 127.0.0.1:8000/helloजैसे कि आपने एक नया टैब खोला और स्वयं किया।
  2. यदि यह सफल होता है (स्थिति कोड 200), सफलता के लिए कार्य करें, जो प्राप्त आंकड़ों को सचेत करेगा।
  3. यदि विफल रहता है, तो एक अलग कार्य करें।

अब यहां क्या होगा? आपको इसमें 'हैलो वर्ल्ड' से अलर्ट मिलेगा। यदि आप घर पर AJAX कॉल करते हैं तो क्या होगा? एक ही बात, आप एक चेतावनी बताते मिल जाएगा <h1>Hello world, welcome to my awesome site</h1>

दूसरे शब्दों में - AJAX कॉल के बारे में कोई नई बात नहीं है। वे आपके लिए केवल एक तरीका है कि उपयोगकर्ता को पृष्ठ छोड़ने के बिना डेटा और जानकारी प्राप्त करने दें, और यह आपकी वेबसाइट के एक चिकनी और बहुत साफ डिजाइन के लिए बनाता है। कुछ दिशानिर्देशों पर आपको ध्यान देना चाहिए:

  1. JQuery जानें । मैं इस पर अधिक जोर नहीं दे सकता हूं। आपको यह जानने के लिए थोड़ा समझना होगा कि आपको प्राप्त डेटा को कैसे संभालना है। आपको कुछ मूल जावास्क्रिप्ट सिंटैक्स को समझने की आवश्यकता होगी (अजगर से दूर नहीं, आपको इसकी आदत हो जाएगी)। मैं दृढ़ता से jQuery के लिए Envato के वीडियो ट्यूटोरियल की सिफारिश करता हूं , वे महान हैं और आपको सही रास्ते पर डाल देंगे।
  2. JSON का उपयोग कब करें? । आप बहुत सारे उदाहरण देखने जा रहे हैं जहां Django के विचारों द्वारा भेजे गए डेटा JSON में हैं। मैं उस पर विस्तार से नहीं गया, क्योंकि यह महत्वपूर्ण नहीं है कि इसे कैसे किया जाए (स्पष्टीकरण बहुत सारे हैं) और बहुत अधिक महत्वपूर्ण जब । और इसका उत्तर है - JSON डेटा क्रमबद्ध डेटा है। यही है, डेटा आप हेरफेर कर सकते हैं। जैसा कि मैंने उल्लेख किया है, एक AJAX कॉल प्रतिक्रिया प्राप्त करेगी जैसे कि उपयोगकर्ता ने स्वयं किया था। अब कहते हैं कि आप सभी HTML के साथ गड़बड़ नहीं करना चाहते हैं, और इसके बजाय डेटा (शायद वस्तुओं की एक सूची) भेजना चाहते हैं। JSON इसके लिए अच्छा है, क्योंकि यह इसे एक ऑब्जेक्ट के रूप में भेजता है (JSON डेटा एक अजगर शब्दकोश की तरह दिखता है), और फिर आप इस पर पुनरावृति कर सकते हैं या कुछ और कर सकते हैं जो बेकार html के माध्यम से झारने की आवश्यकता को हटा देता है।
  3. इसे अंतिम में जोड़ें । जब आप एक वेब ऐप बनाते हैं और AJAX लागू करना चाहते हैं - तो अपने आप पर एक एहसान करें। सबसे पहले, पूरे ऐप को किसी भी AJAX से पूरी तरह से रहित बनाएं। देखें कि सब कुछ काम कर रहा है। फिर, और उसके बाद ही, AJAX कॉल लिखना शुरू करें। यह एक अच्छी प्रक्रिया है जो आपको बहुत कुछ सीखने में मदद करती है।
  4. क्रोम के डेवलपर टूल का उपयोग करें । चूंकि AJAX कॉल बैकग्राउंड में की जाती है, इसलिए उन्हें डिबग करना कभी-कभी बहुत कठिन होता है। आपको क्रोम डेवलपर टूल (या फायरबग जैसे समान उपकरण) और console.logडीबग करने के लिए चीजों का उपयोग करना चाहिए । मैं विस्तार से नहीं समझाऊंगा, बस गूगल के आसपास और इसके बारे में पता लगाऊंगा। यह आपके लिए बहुत मददगार होगा।
  5. CSRF जागरूकता । अंत में, याद रखें कि Django में पोस्ट अनुरोधों की आवश्यकता होती है csrf_token। AJAX कॉल के साथ, कई बार आप पृष्ठ को रीफ्रेश किए बिना डेटा भेजना चाहेंगे। शायद आपको कुछ परेशानी का सामना करना पड़ेगा, इससे पहले कि आप याद रखें कि - रुको, आप भेजना भूल गए csrf_token। यह AJAX-Django एकीकरण में एक ज्ञात शुरुआती सड़क है, लेकिन जब आप सीखते हैं कि इसे कैसे खेलना अच्छा है, तो पाई के रूप में यह आसान है।

वह सब कुछ मेरे सिर आता है। यह एक बहुत बड़ा विषय है, लेकिन हाँ, शायद वहाँ पर्याप्त उदाहरण नहीं हैं। बस धीरे-धीरे वहां अपना काम करें, आप इसे अंततः प्राप्त करेंगे।


1
धन्यवाद। मैं बस तुम कहाँ हो गया है, मैं महसूस कर रहा हूँ। चैटिंग के लिए - आम तौर पर हाँ, लेकिन अभी नहीं (आपके पास विशिष्ट प्रश्नों के लिए ... अच्छी तरह से ... एसओ की संपूर्णता)।
युवी

2
मेरे द्वारा लिंक किए गए वीडियो को पूरे एक सप्ताह के लिए समर्पित करें। गंभीरता से, उनके माध्यम से जाना। वे शानदार हैं
युवी

इसके लिए @yuvi को धन्यवाद! मैं अपने आप को AJAX के बारे में एक ही सवाल पूछ रहा हूँ। अधिक, मुझे यकीन नहीं है कि मुझे AJAX का उपयोग करना चाहिए या नहीं। उदाहरण के लिए, मैं समझता हूं कि बूटस्ट्रैप मोडल रूपों को संभालने के लिए मुझे कुछ जावास्क्रिप्ट की आवश्यकता होगी, लेकिन मुझे समझ नहीं आ रहा है कि यह AJAX से संबंधित है या नहीं। और गंभीरता से, पूरे Jquery को सीखने के लिए बस अपने पेज में एक पॉप-अप दिखाई देने के लिए ... मुझे निवेश पर रिटर्न नहीं दिख रहा है :( क्या कोई सरल विकल्प है ?:( आपके उत्तर के लिए फिर से धन्यवाद।
डेविड D.

5
@DavidW। हैलो डेविड, मुझे खुशी है कि मेरे जवाब ने आपकी मदद की है। AJAX एक तकनीक है, जिसे आप सरल जावास्क्रिप्ट के साथ कर सकते हैं, लेकिन बहुत जटिल बन सकते हैं। jQuery के बस शॉर्टकट हैं जो इसे बहुत आसान बनाते हैं। इसका बूटस्ट्रैप के तौर-तरीकों से कोई लेना-देना नहीं है (आप चाहें तो AJAX के माध्यम से फॉर्म ला सकते हैं, लेकिन यह अन्यथा असंबंधित है)। वैसे भी, मेरा सुझाव है कि आप धीरे-धीरे कोशिश करें और अपना रास्ता निकालें। jQuery इन दिनों महत्वपूर्ण और बहुत बुनियादी है, इसलिए वहां अच्छा निवेश है। जब आप किसी रोडब्लॉक से टकराते हैं, तो SO पर आएं और पूछें (यहां पहले से ही पूछे गए प्रश्न की टिप्पणियों में नहीं, एक नया खोलें)। सौभाग्य!
युवी

के बारे में आपके उल्लेख के संबंध में csrf_token, क्या हम इस पद्धति के आसपास काम कर सकते हैं? यदि हमारे पास एक उदाहरण कार्य है ajaxCall()तो हम किसी चीज़ के पारंपरिक तरीके का उपयोग कर सकते हैं <form onsubmit='ajaxCall();return false;'>, ठीक?
ytpillai

22

युवी के उत्कृष्ट जवाब से आगे, मैं एक छोटे से विशिष्ट उदाहरण को जोड़ना चाहता हूं कि कैसे Django के भीतर इससे निपटने के लिए (किसी भी जेएस का उपयोग किया जाएगा)। उदाहरण AjaxableResponseMixinएक लेखक मॉडल का उपयोग करता है और मानता है।

import json

from django.http import HttpResponse
from django.views.generic.edit import CreateView
from myapp.models import Author

class AjaxableResponseMixin(object):
    """
    Mixin to add AJAX support to a form.
    Must be used with an object-based FormView (e.g. CreateView)
    """
    def render_to_json_response(self, context, **response_kwargs):
        data = json.dumps(context)
        response_kwargs['content_type'] = 'application/json'
        return HttpResponse(data, **response_kwargs)

    def form_invalid(self, form):
        response = super(AjaxableResponseMixin, self).form_invalid(form)
        if self.request.is_ajax():
            return self.render_to_json_response(form.errors, status=400)
        else:
            return response

    def form_valid(self, form):
        # We make sure to call the parent's form_valid() method because
        # it might do some processing (in the case of CreateView, it will
        # call form.save() for example).
        response = super(AjaxableResponseMixin, self).form_valid(form)
        if self.request.is_ajax():
            data = {
                'pk': self.object.pk,
            }
            return self.render_to_json_response(data)
        else:
            return response

class AuthorCreate(AjaxableResponseMixin, CreateView):
    model = Author
    fields = ['name']

स्रोत: Django प्रलेखन, वर्ग-आधारित विचारों के साथ फ़ॉर्म हैंडलिंग

Django के संस्करण 1.6 का लिंक अब संस्करण 1.11 में अपडेट नहीं किया गया है


14

मैं यह इसलिए लिख रहा हूं क्योंकि स्वीकृत उत्तर बहुत पुराना है, इसे पुनश्चर्या की आवश्यकता है।

तो यह है कि मैं 2019 में अजाक्स को Django के साथ कैसे एकीकृत करूंगा :) और हम इसका एक वास्तविक उदाहरण लेते हैं कि हमें अजाक्स की आवश्यकता कब होगी: -

कहते हैं कि मेरे पास पंजीकृत उपयोगकर्ता नाम के साथ एक मॉडल है और Ajax की मदद से मैं यह जानना चाहता हूं कि क्या कोई दिया गया उपयोगकर्ता नाम मौजूद है।

एचटीएमएल:

<p id="response_msg"></p> 
<form id="username_exists_form" method='GET'>
      Name: <input type="username" name="username" />
      <button type='submit'> Check </button>           
</form>   

ajax:

$('#username_exists_form').on('submit',function(e){
    e.preventDefault();
    var username = $(this).find('input').val();
    $.get('/exists/',
          {'username': username},   
          function(response){ $('#response_msg').text(response.msg); }
    );
}); 

urls.py:

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('exists/', views.username_exists, name='exists'),
]

views.py:

def username_exists(request):
    data = {'msg':''}   
    if request.method == 'GET':
        username = request.GET.get('username').lower()
        exists = Usernames.objects.filter(name=username).exists()
        if exists:
            data['msg'] = username + ' already exists.'
        else:
            data['msg'] = username + ' does not exists.'
    return JsonResponse(data)

इसके अलावा render_to_response जिसका बहिष्कार किया जाता है और द्वारा प्रतिस्थापित किया गया प्रस्तुत करना और Django 1.7 के बाद के बजाय से HttpResponse उपयोग हम JsonResponse ajax प्रतिक्रिया के लिए। चूँकि यह JSON एनकोडर के साथ आता है, इसलिए आपको प्रतिक्रिया ऑब्जेक्ट को वापस करने से पहले डेटा को क्रमबद्ध करने की आवश्यकता नहीं होती है, लेकिन HttpResponseइसे पदावनत नहीं किया जाता है।


8

सरल और अच्छा। आपको अपने विचार बदलने की जरूरत नहीं है। Bjax आपके सभी लिंक को संभालता है। इसे देखें: Bjax

उपयोग:

<script src="bjax.min.js" type="text/javascript"></script>
<link href="bjax.min.css" rel="stylesheet" type="text/css" />

अंत में, इसे अपने HTML के प्रमुख में शामिल करें:

$('a').bjax();

अधिक सेटिंग्स के लिए, यहां चेकआउट डेमो: Bjax डेमो


18
नमस्ते वहाँ, जल्दी ध्यान दें - मैं किसी को भी सलाह देना चाहता हूं जो सिर्फ Django और \ या AJAX सीखने की शुरुआत कर रहा है - कृपया इसका उपयोग करें। आप कुछ नहीं सीखेंगे। इसे अपने पसंदीदा में रखें और अपने AJAX अनुरोध अपने दम पर बनाएं। वापस आकर Bjax का उपयोग करें क्योंकि आप पहले से ही परिचित हैं कि यह पृष्ठभूमि में कैसे काम करता है। यह लोगों को विधानसभा को कोड करने के लिए सीखने के लिए कहने जैसा नहीं है - आपको शुद्ध जेएस के साथ अपने AJAX अनुरोधों का निर्माण करने की आवश्यकता नहीं है, बस jQuery, क्योंकि यदि आप कभी भी एक पेशेवर बनना चाहते हैं, तो यह न्यूनतम बुनियादी ज्ञान होगा। की जरूरत है। चीयर्स
युवी

5

AJAX अतुल्यकालिक कार्य करने का सबसे अच्छा तरीका है। किसी वेबसाइट के निर्माण में अतुल्यकालिक कॉल करना कुछ सामान्य है। हम यह जानने के लिए एक छोटा उदाहरण लेंगे कि हम Django में AJAX कैसे लागू कर सकते हैं। हमें jQuery का उपयोग करने की आवश्यकता है ताकि कम जावास्क्रिप्ट लिख सकें।

यह संपर्क उदाहरण है, जो सबसे सरल उदाहरण है, मैं AJAX की मूल बातें और Django में इसके कार्यान्वयन की व्याख्या करने के लिए उपयोग कर रहा हूं। हम इस उदाहरण में POST अनुरोध करेंगे। मैं इस पोस्ट के एक उदाहरण का अनुसरण कर रहा हूं: https://djangopy.org/learn/step-up-guide-to-implement-ajax-in-django

models.py

आइए पहले बुनियादी विवरण रखते हुए संपर्क का मॉडल बनाएं।

from django.db import models

class Contact(models.Model):
    name = models.CharField(max_length = 100)
    email = models.EmailField()
    message = models.TextField()
    timestamp = models.DateTimeField(auto_now_add = True)

    def __str__(self):
        return self.name

forms.py

उपरोक्त मॉडल के लिए फॉर्म बनाएं।

from django import forms
from .models import Contact

class ContactForm(forms.ModelForm):
    class Meta:
        model = Contact
        exclude = ["timestamp", ]

views.py

दृश्य मूल फ़ंक्शन-आधारित दृश्य के समान दिखाई देते हैं, लेकिन रेंडर के साथ लौटने के बजाय, हम JsonResponse प्रतिक्रिया का उपयोग कर रहे हैं।

from django.http import JsonResponse
from .forms import ContactForm

def postContact(request):
    if request.method == "POST" and request.is_ajax():
        form = ContactForm(request.POST)
        form.save()
        return JsonResponse({"success":True}, status=200)
    return JsonResponse({"success":False}, status=400)

urls.py

उपरोक्त दृश्य का मार्ग बनाते हैं।

from django.contrib import admin
from django.urls import path
from app_1 import views as app1

urlpatterns = [
    path('ajax/contact', app1.postContact, name ='contact_submit'),
]

टेम्पलेट

फ्रंटेंड सेक्शन में जाते हुए, उस फॉर्म को रेंडर करें जो csrf_token और सबमिट बटन के साथ फॉर्म टैग को संलग्न करने के ऊपर बनाया गया था। ध्यान दें कि हमने jquery लाइब्रेरी को शामिल किया है।

<form id = "contactForm" method= "POST">{% csrf_token %}
   {{ contactForm.as_p }}
  <input type="submit" name="contact-submit" class="btn btn-primary" />
</form>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

जावास्क्रिप्ट

आइए अब जावास्क्रिप्ट भाग के बारे में बात करते हैं, फॉर्म सबमिट पर हम POST के प्रकार का अनुरोध कर रहे हैं, प्रपत्र डेटा ले रहे हैं और सर्वर की ओर भेज रहे हैं।

$("#contactForm").submit(function(e){
    // prevent from normal form behaviour
        e.preventDefault();
        // serialize the form data  
        var serializedData = $(this).serialize();
        $.ajax({
            type : 'POST',
            url :  "{% url 'contact_submit' %}",
            data : serializedData,
            success : function(response){
            //reset the form after successful submit
                $("#contactForm")[0].reset(); 
            },
            error : function(response){
                console.log(response)
            }
        });
   });

AJAX द्वारा django के साथ शुरुआत करने के लिए यह केवल एक मूल उदाहरण है, यदि आप कई और उदाहरणों के साथ गोता लगाना चाहते हैं, तो आप इस लेख के माध्यम से जा सकते हैं: https://djangopy.org/learn/step-up-guide-to- लागू-ajax-इन-Django


2

मैंने अपनी परियोजना में AjaxableResponseMixin का उपयोग करने की कोशिश की है , लेकिन निम्नलिखित त्रुटि संदेश के साथ समाप्त हो गया था:

अनुचित तरीके से हटाया गया: पुनर्निर्देशित करने के लिए कोई URL नहीं। या तो एक यूआरएल प्रदान करें या मॉडल पर एक get_absolute_url विधि को परिभाषित करें।

ऐसा इसलिए है क्योंकि जब आप ब्राउज़र पर JSON अनुरोध भेजेंगे , तो CreateView एक HttpResponse वापस करने के बजाय एक पुनर्निर्देशित प्रतिक्रिया लौटाएगा । इसलिए मैंने कुछ बदलाव किए हैं AjaxableResponseMixin। यदि अनुरोध एक अजाक्स अनुरोध है, तो यह super.form_validविधि को कॉल नहीं करेगा , बस form.save()सीधे कॉल करें ।

from django.http import JsonResponse
from django import forms
from django.db import models

class AjaxableResponseMixin(object):
    success_return_code = 1
    error_return_code = 0
    """
    Mixin to add AJAX support to a form.
    Must be used with an object-based FormView (e.g. CreateView)
    """
    def form_invalid(self, form):
        response = super(AjaxableResponseMixin, self).form_invalid(form)
        if self.request.is_ajax():
            form.errors.update({'result': self.error_return_code})
            return JsonResponse(form.errors, status=400)
        else:
            return response

    def form_valid(self, form):
        # We make sure to call the parent's form_valid() method because
        # it might do some processing (in the case of CreateView, it will
        # call form.save() for example).
        if self.request.is_ajax():
            self.object = form.save()
            data = {
                'result': self.success_return_code
            }
            return JsonResponse(data)
        else:
            response = super(AjaxableResponseMixin, self).form_valid(form)
            return response

class Product(models.Model):
    name = models.CharField('product name', max_length=255)

class ProductAddForm(forms.ModelForm):
    '''
    Product add form
    '''
    class Meta:
        model = Product
        exclude = ['id']


class PriceUnitAddView(AjaxableResponseMixin, CreateView):
    '''
    Product add view
    '''
    model = Product
    form_class = ProductAddForm

0

जब हम Django का उपयोग करते हैं:

Server ===> Client(Browser)   
      Send a page

When you click button and send the form,
----------------------------
Server <=== Client(Browser)  
      Give data back. (data in form will be lost)
Server ===> Client(Browser)  
      Send a page after doing sth with these data
----------------------------

यदि आप पुराना डेटा रखना चाहते हैं, तो आप इसे अजाक्स के बिना भी कर सकते हैं। (पेज रिफ्रेश हो जाएगा)

Server ===> Client(Browser)   
      Send a page
Server <=== Client(Browser)  
      Give data back. (data in form will be lost)
Server ===> Client(Browser)  
      1. Send a page after doing sth with data
      2. Insert data into form and make it like before. 
      After these thing, server will send a html page to client. It means that server do more work, however, the way to work is same.

या आप अजाक्स के साथ कर सकते हैं (पृष्ठ ताज़ा नहीं होगा)

--------------------------
<Initialization> 
Server ===> Client(Browser) [from URL1]    
      Give a page                      
--------------------------  
<Communication>
Server <=== Client(Browser)     
      Give data struct back but not to refresh the page.
Server ===> Client(Browser) [from URL2] 
      Give a data struct(such as JSON)
---------------------------------

यदि आप अजाक्स का उपयोग करते हैं, तो आपको ये करना चाहिए:

  1. URL1 का उपयोग करके HTML पेज शुरू करें (हम आमतौर पर Django टेम्पलेट द्वारा प्रारंभिक पृष्ठ)। और फिर सर्वर क्लाइंट को एक html पेज भेजता है।
  2. URL2 का उपयोग कर सर्वर के साथ संवाद करने के लिए Ajax का उपयोग करें। और फिर सर्वर क्लाइंट को डेटा स्ट्रक्चर भेजता है।

Django अजाक्स से अलग है। इसके लिए कारण इस प्रकार है:

  • क्लाइंट में वापसी की बात अलग है। Django का मामला HTML पेज है। अजाक्स का मामला डेटा संरचना है। 
  • Django कुछ बनाने में अच्छा है, लेकिन यह केवल एक बार बना सकता है, यह कुछ भी नहीं बदल सकता है। Django एनीमे की तरह है, जिसमें कई चित्र हैं। इसके विपरीत, अजाक्स sth बनाने में अच्छा नहीं है, लेकिन html पेज में मौजूद sth में अच्छा है।

मेरी राय में, अगर आप हर जगह ajax का उपयोग करना चाहते हैं। जब आपको पहली बार डेटा के साथ एक पेज शुरू करने की आवश्यकता होती है, तो आप अजाक्स के साथ Django का उपयोग कर सकते हैं। लेकिन कुछ मामलों में, आपको सर्वर से बिना किसी स्थैतिक पृष्ठ की आवश्यकता है, आपको Django टेम्पलेट का उपयोग करने की आवश्यकता नहीं है।

अगर आपको नहीं लगता कि अजाक्स सबसे अच्छा अभ्यास है। आप सब कुछ करने के लिए Django टेम्पलेट का उपयोग कर सकते हैं, जैसे कि एनीमे।

(मेरी अंग्रेजी अच्छी नहीं है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.