我希望用户在个人资料页面上上传个人资料图片,但不会将其存储在媒体/文档文件夹中,是的,我已经在html表单中输入了enctype =“multipart / form-data”方法是邮寄。我是django的新手,所以请提供一个简单的解决方案
models.py
class User(models.Model):
first_name=models.CharField(max_length=20)
last_name=models.CharField(max_length=20)
username=models.CharField(max_length=25, primary_key=True)
password=models.CharField(max_length=15)
email_id=models.CharField(max_length=30, default='NULL')
profile_pic=models.ImageField(upload_to='profilepics/%Y/%m/%d/',height_field=200,width_field=200,default='')
forms.py
class ProfilePicForm(forms.ModelForm):
class Meta:
model=User
fields=['username','profile_pic']
views.py
def upload(request):
if request.method == 'POST':
username=request.POST['username']
m=User(username=username)
m.profile_pic=request.FILES['profile_pic']
m.save()
return render(request,'LoginPage/done.html')
else:
pic=ProfilePicForm()
return render(request,'AfterLogin/profile.html')
html文件
<form method="POST" enctype="multipart/form-data" action="{% url 'LoginPage:upload' %}">
{% csrf_token %}
<p>Upload your profile photo</p><br>
<input id="id_image" type="file" class="" name="image">
<input type="hidden" name="username" value="{{ username }}">
<input type="submit" value="Submit"/>
</form>
答案 0 :(得分:1)
答案 1 :(得分:0)
您不必定义自己的User
模型,因为Django拥有自己的模型:https://docs.djangoproject.com/en/1.10/ref/contrib/auth/#user-model
正如Jonatan建议的那样 - 发布错误代码。如果没有,请删除此try ... except: pass
。
答案 2 :(得分:0)
我认为最好使用Django创建的标准User模型,该模型已经包含first_name,last_name,username,password和email字段。然后使用模型用户创建一个带有OneToOneField的新模型。
如果图片上传,如果在运行服务器时直接转到图片网址时获得404,则您忘记提供图片,而在生产阶段您必须这样做。
urlpatterns = [
...patterns...
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
这样的事情应该有效:
modles.py
from django.contrib.auth.models import User
class UserPicture(models.Model):
user = models.OneToOneField(User, on_delete = models.CASCADE)
picture = models.ImageField(upload_to='...')
forms.py
class ProfilePicForm(forms.ModelForm):
class Meta:
model = UserPicture
fields=['profile_pic']
views.py
def your_view(request):
...
if request.method == 'POST':
form = UserPicture(request.POST, request.FILES)
if form.is_valid():
userprofile = form.save()
userprofile.user = request.user
userprofile.save()
...