2017-02-01 1 views
0

이미지의 uploas 시스템을 만들고 있습니다. 하지만 오류가 발생했습니다. /accounts/upload_save/ 에 ValueError가 있는데 기수 10 인 'int'에 대한 리터럴이 잘못되었습니다. 이 오류는 int 유형 값이 인수에 없다고 생각합니다.ValueError는 밑이 10 인 int()에 대한 리터럴이 올바르지 않습니다. '

내 역 추적은

photo_obj = Post.objects.get(id=photo_id) 

가 잘못 보여 주었다. 하지만 get()은 int 타입 값이 될 수 있으므로 오류를 수정할 수는 없습니다. 어떻게 해결할 수 있습니까? profile.html에서 urls.py

from django.conf.urls import url 
from . import views 
from django.contrib.auth.views import login, logout 

urlpatterns = [ 
    url(r'^regist/$', views.regist,name='regist'), 
    url(r'^regist_save/$', views.regist_save, name='regist_save'), 
    url(r'^profile/$', views.profile, name='profile'), 
    url(r'^upload/(?P<p_id>\d+)/$', views.upload, name='upload'), 
    url(r'^upload_save/$', views.upload_save, name='upload_save'), 
] 

에서 내가 views.py에 쓴

,

@require_POST 
def regist_save(request): 
    form = RegisterForm(request.POST) 
    if form.is_valid(): 
     user = form.save() 
     login(request, user) 
     context = { 
      'user': request.user, 
     } 
     return redirect('profile') 


    context = { 
     'form': form, 
    } 
    return render(request, 'registration/accounts/regist.html', context) 


def photo(request): 
    d = { 
     'photos': Post.objects.all(), 
    } 
    return render(request, 'registration/accounts/profile.html', d) 


def upload(request, p_id): 
    d = { 
     'p_id': p_id, 
    } 
    return render(request, 'registration/accounts/profile.html', d) 


def upload_save(request): 
    photo_id = request.POST.get("p_id", "") 
    photo_obj = Post.objects.get(id=photo_id) 
    files = request.FILES.getlist("files[]") 

    photo_obj.image1 = files[0] 
    photo_obj.image2 = files[1] 
    photo_obj.image3 = files[2] 

    photo_obj.save() 

    return redirect("registration/accounts/profile.html") 

{% extends "registration/accounts/base.html" %} 
    {% block content %} 

    <!DOCTYPE html> 

    <html lang="ja"> 
    <head> 
     <meta charset="utf-8"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <title>UPLOAD</title> 
    </head> 
    <body> 
    user.username: {{ user.username }}<hr> 
    user.is_staff: {{ user.is_staff }}<hr> 
    user.is_active: {{ user.is_active }}<hr> 
    user.last_login: {{ user.last_login }}<hr> 
    user.date_joined: {{ user.date_joined }} 

    <div class="container"> 
     <form action="{% url 'accounts:upload_save' %}" method="POST" enctype="multipart/form-data"> 
     {% csrf_token %} 
     <input type="file" name="files[]" multiple> 
     <input type="hidden" value="{{ p_id }}" name="p_id"> 
     <input type="submit" value="Upload"> 
     </form> 
    </div> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    </body> 
    </html> 

    {% endblock %} 

답변

2

photo_id = request.POST.get("p_id", "")

N있다 이 POST 요청에서 p_id에게 O를 따라서 photo_id''

photo_obj = Post.objects.get(id=photo_id)

그럼 당신은 당신에게 ValueError: invalid literal for int() with base 10: ''

+0

들으을 알 수 있도록,이 빈 문자열이있는 photo_obj을 얻으려고, 당신에게 빈 문자열로 설정 내 p_id 정의는 어디에도 없습니다, 맞습니까? { 가 'p_id'p_id, } = D : 는하지만 내가 데프 (요청, p_id) 업로드 views.py 에서 p_id를 썼다 생각 수익률 (요청 렌더링을, '등록/계정/profile.html', D) 그래서 어떻게 해결할 수 있습니까? – lili

+0

'p_id'는 양식의 매개 변수 중 하나 여야합니다.이 매개 변수가 사용 가능한지 확인하려면 profile.html 템플리트를 점검해야합니다. – Shane

관련 문제