Python 无法将图像从表单上载到Django管理模型
我正在尝试从我的表单(signup.html)上传一个图像,然后我希望上传的图像名称/url也显示在Django管理模型面板上。所以我可以访问用户从django管理面板上传的图像。 图像上传功能在Django面板中工作,但当我从表单上传时。我的django管理员没有保存它。它也不保存任何信息,如电子邮件、简历、图像等 我已经尝试了stackoverflow的一些解决方案,但没有成功 这是我的观点Python 无法将图像从表单上载到Django管理模型,python,html,django,django-models,file-upload,Python,Html,Django,Django Models,File Upload,我正在尝试从我的表单(signup.html)上传一个图像,然后我希望上传的图像名称/url也显示在Django管理模型面板上。所以我可以访问用户从django管理面板上传的图像。 图像上传功能在Django面板中工作,但当我从表单上传时。我的django管理员没有保存它。它也不保存任何信息,如电子邮件、简历、图像等 我已经尝试了stackoverflow的一些解决方案,但没有成功 这是我的观点 from django.shortcuts import render, redirect from
from django.shortcuts import render, redirect
from .forms import CustomerForm
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from .models import Profile
def register(request):
if request.method == 'POST':
form = CustomerForm(request.POST, request.FILES or None)
if form.is_valid():
username = form.cleaned_data.get('username')
email = form.cleaned_data.get('email')
bio = form.cleaned_data.get('bio')
image = request.FILES.get('image')
form.save()
messages.success(request, f'Account is created. ')
return redirect('signin')
else:
form = CustomerForm()
return render(request, 'Authentication/signup.html', {'form': form})
@login_required
def UserAuth(request):
return render(request, 'Authentication/profile.html')
下面是我的forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from .models import *
class CustomerForm(UserCreationForm):
first_name = forms.CharField(max_length=100, help_text='Preferred first Name')
last_name = forms.CharField(max_length=100, help_text='Preferred Last Name')
email = forms.EmailField()
image = forms.ImageField()
bio = forms.CharField(max_length=500)
class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'image', 'bio', 'password1', 'password2')
这是我的模特
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField()
email = models.EmailField()
image = models.ImageField(upload_to='pictures', default='default.jpg', blank=True, null=True)
def __str__(self):
return f'{self.user.username} Profile'
signup.html
<!DOCTYPE html >
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
<title>Signup</title>
</head>
<body>
<header>
<main role="main" class="container">
<h2>Sign up Form</h2>
{% load crispy_forms_tags %}
{% block content %}
<div class="content-section">
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">
Join today
</legend>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline" type="submit">SignUp</button>
</div>
</form>
<div class="border-top pt-3">
<small class="text-muted">Already registered with us? please Signin
<a class="ml-2" href="{% url 'signin' %}">SignIn</a>
</small>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
{% endblock content %}
<br>
<br>
<div class="col-md-offset-6">
<div class="content-section">
<h3>Something more?</h3>
<p class='text-muted'> Check out the latest tweets from elon.</p>
<ul class="list-group">
<li class="list-group-item list-group-item-light">Latest Tweets</li>
<li class="list-group-item list-group-item-light">Elon tweets?</li>
</ul>
</div>
</div>
</main>
</header>
</body>
</html>
报名
报名表
{%load crispy_forms_tags%}
{%block content%}
{%csrf_令牌%}
今天加入
{{form | crispy}}
报名
已经注册了吗?请签名
{%endblock内容%}
还要别的吗?
查看埃隆的最新推文
最新推文
Elon推特
感谢您的帮助您是否审阅了表格中的任何错误?这是
if form.u有效吗():
是否为真?将{{form.errors}}
添加到您的html或在终端中打印它们。它没有显示任何错误。当我单击(注册)时,它只是将我重定向到下一页(登录),但django admin modelits form.erorrs(末尾有一个s)中仍然没有保存(bio、email、image)。请在views.py函数中使用一些打印语句或调试器来查看代码停止的位置以缩小问题范围。我尝试使用{form.errors}仍然无法修复该问题。这是因为默认情况下用户模型没有图像字段。而且您没有扩展用户模型。”“配置文件”具有图像字段,注册表单将在用户模型中创建用户。因为它没有图像字段,所以不会保存它。但将保存其他字段。是否检查表单中的任何错误?这是if form.u有效吗():
是否为真?将{{form.errors}}
添加到您的html或在终端中打印它们。它没有显示任何错误。当我单击(注册)时,它只是将我重定向到下一页(登录),但django admin modelits form.erorrs(末尾有一个s)中仍然没有保存(bio、email、image)。请在views.py函数中使用一些打印语句或调试器来查看代码停止的位置以缩小问题范围。我尝试使用{form.errors}仍然无法修复该问题。这是因为默认情况下用户模型没有图像字段。而且您没有扩展用户模型。”“配置文件”具有图像字段,注册表单将在用户模型中创建用户。因为它没有图像字段,所以不会保存它。但将保存其他字段。