2016-04-05 13 views
1

私は同じテンプレート上にある画像とともに空間情報を更新しようとしています。コンテンツを追加できましたが、更新できませんでした.iはslugを渡そうとしましたイメージを更新するための更新されたスペース情報を提出するが、スラッグはヌルと表示される。私のAjaxコードとビューは、追加部分では機能していましたが、更新部分では機能しませんでした。私は成功関数の内部にあるconsole.log( 'rent worked')を表示しますが、 'request.post'は印刷されませんEditSpaceView関数内にある理由は何でしょうか?私はそれを動作させるために何をすべきですか?空間情報と画像を更新中にステータスコード300が返されます

views.py

class EditSpaceView(View): 
    def post(self,request,*args,**kwargs): 
     print ('edit space view',request) 
     if request.POST: 
      print('request.post') 
      response = HttpResponse('') 
      print('edited owner name is',request.POST.get('ownerName')) 
      print('edited amenities',request.POST.get('amenities')) 
      rental = Rental.objetcs.get(slug=self.kwargs['slug']) 
      rental.ownerName = request.POST.get('ownerName') 
      rental.email = request.POST.get('email') 
      rental.phoneNumber = request.POST.get('phoneNumber') 
      rental.listingName = request.POST.get('listingName') 
      rental.summary = request.POST.get('summary') 
      rental.property = request.POST.get('property') 
      rental.room = request.POST.get('room') 
      rental.price = request.POST.get('price') 
      rental.city = request.POST.get('city') 
      rental.place = request.POST.get('place') 
      rental.water = request.POST.get('water') 
      rental.amenities = request.POST.get('amenities') 
      rental.save() 
      response['pk-user'] = rental.slug 
      #response['pk-user'] = rental.pk 
      print('response slug', response); 
      return response 

     return HttpResponseRedirect('/') 

class EditImage(View): 
    model = Rental 
    template_name = 'rentals/rent_detail.html' 
    def get(self, request, *args, **kwargs): 
     return render(request, self.template_name) 
    def post(self,request,*args,**kwargs): 
     try: 
      rental = Rental.objects.get(slug = self.kwargs['slug']) 
      print('rental slug',rental) 
     except Rental.DoesNotExist: 
      error_dict = {'message': 'Rental spae not found'} 
      return self.render(request,'rentals/rent_detail.html',error_dict) 
     if request.FILES: 
      for file in request.FILES.getlist('image'): 
       print('file',file) 
       image = Gallery.objects.create(rental = rental, image=file) 
       print('image',image) 
     return HttpResponseRedirect('/') 

urls.py

url(r'^edit/image/(?P<slug>[\w-]+)/$', EditImage.as_view(), name="editImage"), 
url(r'^edit/space/(?P<slug>[\w-]+)/$', EditSpaceView.as_view(), name="editSpace"), 

Ajaxコード

$.ajax({ 
     url:'/edit/space/'+this.props.slug+'/', 
     contentType: "application/json", 
     data:sendData, 
     type:'POST', 
     success: function(data, textStatus, xhr) { 
     console.log('rent worked'); 
     var slug = xhr.getResponseHeader('pk-user'); 
     console.log('slug',slug); 
     $.ajax({ 
     url:'/edit/image/'+slug+'/', 
     data:image, 
     contentType:false, 
     processData:false, 
     type:'POST', 
     mimeType: "multipart/form-data", 
     success: function(data) { 
      console.log('success'); 
     } 
    }); 
    } 
}); 

スタックトレースサーバコンソールで

[05/Apr/2016 02:58:35] "GET /api/v1/rental/tushant-khatiwada/ HTTP/1.1" 200 963 
edit space view <WSGIRequest: POST '/edit/space/tushant-khatiwada/'> 
[05/Apr/2016 02:58:50] "POST /edit/space/tushant-khatiwada/ HTTP/1.1" 302 0 
[05/Apr/2016 02:58:51] "GET/HTTP/1.1" 200 2363 
Not Found: /edit/image/null/ 
[05/Apr/2016 02:58:51] "POST /edit/image/null/ HTTP/1.1" 404 6882 

答えて

1
[05/Apr/2016 02:58:35] "GET /api/v1/rental/tushant-khatiwada/ HTTP/1.1" 200 963 
edit space view <WSGIRequest: POST '/edit/space/tushant-khatiwada/'> 
[05/Apr/2016 02:58:50] "POST /edit/space/tushant-khatiwada/ HTTP/1.1" 302 0 
[05/Apr/2016 02:58:51] "GET/HTTP/1.1" 200 2363 

これらの要求は、予想通りEditSpaceViewで編集すると働いていたことを示唆しています。 300の応答が予想され、そのビューの最後にHttpResponseRedirect("/")があるためです。

要求

[05/Apr/2016 02:58:51] "POST /edit/image/null/ HTTP/1.1" 404 6882 

あなたは、AJAXリクエストのURLを構築するために使用しているslugが有効でないか、nullであることを示唆しています。具体的には、この行を確認してください。

var slug = xhr.getResponseHeader('pk-user'); 
+0

次に、HttpResponseRedirect( '/')で何をすればよいですか? – Tushant

+0

@ Tushant、それはエラー/問題だとは思わない。しかし、そのメソッドの 'return response'がなぜ機能していないのかを確認してください。 – Rohan

+0

print( 'request.post')もdjangoコンソールには表示されません。要求だけが印刷されます。 – Tushant

関連する問題