【发布时间】:2021-02-07 13:53:17
【问题描述】:
我已经在尝试修复这个错误几天了。我将 User 扩展为多了一个 Image 字段,但是,图像本身并没有保存到 /media/profile 路径中。如果我从管理面板添加图像,该图像将显示在前面/用户(个人资料图像)中,它也将被创建到所需的路径 /media/profile 中。我假设我的代码在我创建用户并另外添加路径的地方是错误的,因为如果我不添加路径,它将查看图像的根媒体文件夹。
custom_user = Profile.objects.create(user = user, profile_image= 'profiles/'+today_path+'/'+profile_image)
这是我的第一个 Django 项目,它几乎完成了,只是这个错误我无法修复它。对于如何修复它,我将不胜感激。谢谢,谢谢,谢谢!
注册表:
<form action="{% url 'register' %}" method = 'POST'>
{% csrf_token %}
<div class="form-group">
<label class = 'fntmk color' for="first_name">Name</label>
<input type="text" name="first_name" required>
</div>
<div class="form-group">
<label class = 'fntmk color' for="last_name">Surname</label>
<input type="text" name="last_name" required>
</div>
<div class="form-group">
<label class = 'fntmk color' for="username">Username</label>
<input type="text" name="username"required>
</div>
<div class="form-group">
<label class = 'fntmk color' for="email">Email</label>
<input type="email" name="email" required>
</div>
<div class="form-group">
<label class = 'fntmk color' for="password">Password</label>
<input type="password" name="password"required>
</div>
<div class="form-group">
<label class = 'fntmk color' for="password2">Confirm password</label>
<input type="password" name="password2" required>
</div>
<div class="form-group">
<label class ='fntmk color' for = 'profile_image'>Profile image</label>
<strong><input type ='file' name = 'profile_image' id = 'profile_image'></strong>
</div>
<input type="submit" value="Register" class="btn btn-register btn-block fntmk my2">
</form>
views>注册def>
def register(request):
if request.method == "POST":
# Get form values
first_name = request.POST['first_name']
last_name = request.POST['last_name']
username = request.POST['username']
email = request.POST['email']
password = request.POST['password']
password2 = request.POST['password2']
profile_image = request.POST['profile_image']
print(type(profile_image))
if len(password) > 6:
# Check if passwords match
if password == password2:
# Check username
if User.objects.filter(username=username).exists():
messages.error(request, 'Username exists')
return redirect('register')
else:
if User.objects.filter(email=email).exists():
messages.error(request, "Error, email exists")
return redirect('register')
else:
# if ok
user = User.objects.create_user(username=username, password=password, email=email, first_name = first_name, last_name = last_name)
todayT = datetime.now()
today_path = todayT.strftime("%Y/%m/%d")
print(type(today_path))
custom_user = Profile.objects.create(user = user, profile_image= 'profiles/'+today_path+'/'+profile_image)
print(type(custom_user))
# Login after register
auth.login(request, user)
messages.success(request, "Welcome!" )
custom_user.save()
return redirect('dashboard')
else:
messages.error(request, "Wrong password!" )
return render(request, 'pages/register.html')
else:
return render(request, 'pages/register.html')
models.py>扩展用户>
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
profile_image = models.ImageField(upload_to = 'profiles/%Y/%m/%d/', blank = True, null = True)
【问题讨论】:
标签: django