/ / Django। यूरल्स में अनबाउंड विधि - अजगर, डीजेंगो

Django। यूआरएल में अनबाउंड विधि - पायथन, डीजेंगो

मैं लोकलहोस्ट: 8000 / अपलोड फ़ाइल को स्वीकार करने और इस समस्या में चलाने की कोशिश कर रहा हूँ

अनबाउंड विधि upload_file () को पहले उदाहरण के रूप में अपलोड उदाहरण के साथ बुलाया जाना चाहिए (इसके बजाय WSGIRequest उदाहरण मिला)

urls.py

from django.conf.urls import include, url
from django.contrib import admin

from upload.views import Upload


urlpatterns = [
url(r"^admin/", include(admin.site.urls)),
url(r"^upload/$", Upload.upload_file),
url(r"^thanks/$", Upload.thanks),
]

views.py

from django.http import HttpResponse
from django.template import RequestContext

from django.shortcuts import render_to_response
from upload.forms import FileForm

from upload.models import upFile

class Upload():

def upload_file(request):
if request.method == "POST":
form = FileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("thanks")
else:
form = FileForm()

return render_to_response("temp1.html", {"form": form}, context_instance = RequestContext(request))

def thanks(request):
return render_to_response("temp2.html")

उत्तर:

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

आपका विचार एक Django वर्ग आधारित दृश्य से विरासत में नहीं मिला है: https://docs.djangoproject.com/en/1.8/topics/class-based-views/intro/

from django.views.generic import View


class Upload(View):
def upload_file(self, request):
if request.method == "POST":
form = FileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("thanks")
else:
form = FileForm()

return render_to_response("temp1.html", {"form": form}, context_instance = RequestContext(request))

def thanks(self, request):
return render_to_response("temp2.html")

आपको इन दृश्य वर्गों में से एक को इनहेरिट करने की आवश्यकता है अन्यथा Django आपके विचार को एक सामान्य वर्ग के रूप में मानेगा जिसके कारण आपको वह त्रुटि मिल रही है।

आपको अपने urls.py को भी समायोजित करने की आवश्यकता है:

urlpatterns = [
url(r"^upload/", Upload.as_view()),
]

डॉक्स के माध्यम से और पर देखने के बादआपके vie की संरचना मुझे यकीन नहीं है कि आप वर्ग आधारित विचारों के लिए अपने विचारों को ठीक से संरचित कर रहे हैं। आप डॉक्स के माध्यम से कुछ और पढ़ना चाहते हैं और तदनुसार अपनी संरचना समायोजित कर सकते हैं।

मुझे विश्वास है कि आप कुछ ऐसा चाहते हैं जो इस तरह दिखाई दे:

class Upload(View):
def get(self, request):
form = FileForm()
return render_to_response("temp1.html", {"form": form}, context_instance = RequestContext(request))

def post(self, request):
form = FileForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect("thanks")
else:
return render_to_response("temp2.html")

जवाब के लिए 0 № 2

मुझे समझ में नहीं आता है कि आपके पास अपलोड क्लास क्यों है। पायथन जावा नहीं है, सब कुछ कक्षाओं में रखने की आवश्यकता नहीं है। डाल upload_file तथा thanks मॉड्यूल स्तर पर, और सीधे यूआरएल पैटर्न में उन्हें देखें।