私は自分のアカウントにプロフィール画像をアップロードする機能を提供しようとしています。問題は、私は、Djangoのユーザモデルを使用していているので、私は、私はimage = models.ImageField()
Djangoは組み込みユーザーモデルを使用して画像をアップロードします
を追加することができます私自身のモデルを持っていないこれは、画像ボタンが中である私の登録ページに私のforms.py
from django import forms
from django.contrib.auth import authenticate, get_user_model,
class UserRegisterForm(forms.ModelForm):
confirm_email = forms.EmailField()
password = forms.CharField(widget=forms.PasswordInput)
confirm_password = forms.CharField(widget=forms.PasswordInput)
image = forms.ImageField(required=False)
class Meta:
model = User
fields = ['email','confirm_email','username','password']
def clean_confirm_email(self):
email = self.cleaned_data.get("email")
confirm_email = self.cleaned_data.get("confirm_email")
if email != confirm_email:
raise forms.ValidationError("Emails do not match")
email_qs = User.objects.filter(email=email)
if email_qs.exists():
raise forms.ValidationError("Email already used")
return email
def clean_confirm_password(self):
password = self.cleaned_data.get("password")
confirm_password = self.cleaned_data.get("confirm_password")
if password != confirm_password:
raise forms.ValidationError("Passwords do not match")
return password
です私はイメージを保存し、それをユーザーにリンクする方法を知らない。私のmodels.pyとadmin.pyが空であるので、uは、私はDjangoのユーザーモデルを使用しています見ることができるように
これは、だから私のviews.py
from django.shortcuts import render, redirect
from django.contrib.auth import (authenticate, get_user_model, login, logout)
from .forms import UserLoginForm, UserRegisterForm
# Create your views here.
def login_view(request):
login_form = UserLoginForm(request.POST or None)
if login_form.is_valid():
username = login_form.cleaned_data.get("username")
password = login_form.cleaned_data.get("password")
user = authenticate(username=username,password=password)
login(request, user)
return redirect('/')
context = {
"login_form": login_form
}
return render(request, 'login.html', context)
def register_view(request):
form = UserRegisterForm(request.POST or None)
if form.is_valid():
user = form.save(commit=False)
password = form.cleaned_data.get("password")
user.set_password(password)
user.save()
new_user = authenticate(username=user.username,password=password)
login(request, new_user)
return redirect('/')
context = {
'form': form,
}
return render(request, 'signup.html', context)
def logout_view(request):
logout(request)
return redirect('/')
です。
ほとんどのソリューションは、自分のモデルを持っていました。
ありがとう、私は答えのうちの1つを試してくれてありがとう、私はそれを行うことができました:) – aamurad