2017-02-01 5 views
0

Ich mache ein Bilder 'Uploas-System. Aber ich habe einen Fehler, ValueError at/Konten/upload_save/ ungültiges Literal für int() mit Basis 10: ''. Ich denke, dieser Fehler ist, dass Int-Wert nicht in Argument ist.ValueError ungültiges Literal für int() mit Basis 10: ''

Meine Zurückverfolgungs zeigte

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

falsch war. Aber get() ist in Ordnung, um in int-Wert zu sein, so kann ich meinen Fehler nicht beheben. Wie kann ich es beheben?

ich in views.py schrieb,

@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") 

in 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'), 
] 

in 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 %} 

Antwort

2

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

Es gibt n o p_id in dieser POST-Anforderung wird daher photo_id auf einen leeren String gesetzt ''

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

Dann versuchen Sie eine photo_obj mit diesem leeren String zu erhalten, so dass es Sie ValueError: invalid literal for int() with base 10: ''

+0

thx sagt, dir gesagt Ich p_id Definition ist nirgendwo, oder? Aber ich denke, ich p_id in views.py schrieb def hochladen (Anfrage, p_id): d = { 'p_id': p_id, } return machen (Antrag, 'Registrierung/accounts/profile.html', d) Also, wie kann ich es beheben? – lili

+0

'p_id' sollte einer der Parameter in Ihrem Formular sein, Sie müssen Ihre profile.html Vorlage überprüfen, um sicherzustellen, dass dieser Parameter verfügbar ist. – Shane

Verwandte Themen