/ / Django चलाने के अन्य सूचकांक में कोड के दोहराव के बिना डीईईई सूचकांक (reuqest) - django, देखें

Django रन डिफ इंडेक्स (reuqest) कोड के दोहराव के बिना अन्य def में, django, देखें

मेरे दृष्टिकोण में, मेरे पास एक डीफ़ेक्ट इंडेक्स (अनुरोध) है: और अन्य डीफ़ेक्ट (अनुरोध):

डिफ अन्य (अनुरोध) में: मैं डीईई इंडेक्स (अनुरोध) जैसे सटीक कोड चलाना चाहता हूं: यदि request.method == "POST": और कुछ अलग करें

डिफ इंडेक्स (अनुरोध) से कोड कॉपी करें: अन्य (अनुरोध) को अस्वीकार करने के लिए: अगर request.method == "POST" के बाद: काम करता है, लेकिन डुप्लिकेट कोड खराब है। अगर मैं इफ स्टेटमेंट के बाद इंडेक्स (रिक्वेस्ट) करता हूं, तो दूसरे को रिक्वेस्ट करें (रिक्वेस्ट): कुछ नहीं लौटाएं।

इसे प्राप्त करने का सही तरीका क्या है?

@login_required
def other(request):
if request.method == "POST":
# do the same like in def index(request):
index(request)
else:
# do somthing different
pass
return render(request, "search/index.html")


@login_required
def index(request):
if request.method == "POST":
form = SearchForm(request.POST)
if form.is_valid():
# do something
pass
return render(request, "search/index.html")

उत्तर:

उत्तर № 1 के लिए 1

आप रीडायरेक्ट फ़ंक्शन का उपयोग करके इंडेक्स फ़ंक्शन को पुनर्निर्देशित कर सकते हैं। अपनी url.py फ़ाइल में कुछ ऐसा है

url(r"^index/$", "app.views.index", name="index"),

तब आप अपने अन्य दृश्य को अनुक्रमणिका की तरह पुनर्निर्देशित कर सकते हैं

from django.http import HttpResponse
from django.shortcuts import redirect
from django.urls import reverse

def index(request, *args, **kwargs):
# your index code
return HttpResponse(result)


def other(request, *args, **kwargs):
if request.method == "POST":
return redirect(reverse("index", args=args, kwargs=kwargs))
else:
# else code for GET, PUT,...

यदि आप पुनर्निर्देशित नहीं करना चाहते हैं, तो नीचे दिए गए कोड का पालन करें

def index(request, *args, **kwargs):
# your index code
return HttpResponse(result)


def other(request, *args, **kwargs):
if request.method == "POST":
return index(request, *args, **kwargs)
else:
# else code for GET, PUT,...