所以我有一个django应用程序,我在其中创建了一个表单。当我在表单上提交图像时,我单击图像图标,应用程序自动崩溃,我在终端中看到:django.utils.datastructures.MultiValueDictKeyError:'photo' '''
{% extends "auctions/layout.html" %}
{% block body %}
<h2>Create New Listing</h2>
<form action="{% url 'newListing' %}" method="post">
{% csrf_token %}
<div class="form-group">
<input autofocus class="form-control" type="text" name="title" placeholder="Title">
</div>
<div class="form-group">
<input class="form-control" type="text" name="description" placeholder="Description">
</div>
<div class="form-group">
<input class="form-control" type="number" name="bid" placeholder="Price">
</div>
<div class="form-group">
<input class="form-control" type="image" name="photo" placeholder="Image">
</div>
<input class="btn btn-primary" type="submit" value="Post">
</form>
{% endblock %}
'''
views.py
'''
from django.contrib.auth import authenticate, login, logout
from django.db import IntegrityError
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render
from django.urls import reverse
from django.contrib.auth.decorators import login_required
from .models import User
def index(request):
return render(request, "auctions/index.html")
def login_view(request):
if request.method == "POST":
# Attempt to sign user in
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
# Check if authentication successful
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "auctions/login.html", {
"message": "Invalid username and/or password."
})
else: #if user didnt just fill form they need to go to login page to do that
return render(request, "auctions/login.html")
def logout_view(request):
logout(request)
return HttpResponseRedirect(reverse("index"))
def register(request):
if request.method == "POST": #if they just filled out register form
username = request.POST["username"]
email = request.POST["email"]
# Ensure password matches confirmation
password = request.POST["password"]
confirmation = request.POST["confirmation"]
if password != confirmation:
return render(request, "auctions/register.html", {
"message": "Passwords must match."
})
# Attempt to create new user
try:
user = User.objects.create_user(username, email, password)
user.save()
except IntegrityError:
return render(request, "auctions/register.html", {
"message": "Username already taken."
})
login(request, user) #logs in user
return HttpResponseRedirect(reverse("index")) #takes to index
else:
return render(request, "auctions/register.html") #if they click register
@login_required
def newListing(request):
if request.method == "POST": #if they just enetered values for new listing
title = request.POST["title"]
description = request.POST["description"]
bid = request.POST["bid"]
image = request.POST["photo"]
return render(request, "auctions/new.html") #right when they cllick the button
''' 表单的其余部分似乎正常工作,我对图像使用了相同的格式
目前没有回答
相关问题 更多 >
编程相关推荐