Python 如何让用户在不使用Django表单的情况下手动在Django中保存或编辑其个人资料信息
我正在做一个引导模板。但是,在数据库中保存配置文件信息会带来很大的问题。这是我的密码。我不知道我是否做对了。但它不起作用 models.py views.pyPython 如何让用户在不使用Django表单的情况下手动在Django中保存或编辑其个人资料信息,python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我正在做一个引导模板。但是,在数据库中保存配置文件信息会带来很大的问题。这是我的密码。我不知道我是否做对了。但它不起作用 models.py views.py 在应用程序中,dir create forms.py包含: forms.py: from django import forms from your-app.models import Profile # insert your currently app name class ProfileForm(forms.ModelForm)
在应用程序中,dir create forms.py包含: forms.py:
from django import forms
from your-app.models import Profile # insert your currently app name
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
和views.py:
from django.views import View
from your-app.models import Profile # your curr app name
from your-app.forms import ProfileForm
class UpdateProfile(View):
model = Profile
template_name = 'some.html'
def get(self, request, **kwargs):
user = Profile.objects.get(id=request.user.id)
form = ProfileForm(initial=user.__dict__)
return render(request, self.template_name, locals())
def post(self, request, **kwargs):
user = Profile.objects.get(id=request.user.id)
os.remove(user.propic.path)
form.ProfileForm(request.POST, request.FILES, instance=user)
form.save()
return redirect('/')
和您的URL.py:
urlpatterns = [
....,
path('update', UpdateProfile.as_view()),
...
]
更新模板:
<form action="update/" method="post" enctype="multipart/form-data"> <!-- this line requered, otherwise your form won't take a photo -->
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" name="update" value="update">
<input type="submit" name="cancel" value="cancel">
</form>
{%csrf_令牌%}
{{form}}
只要把它抄过去就行了,假设它能用谢谢大家的帮助。我想知道怎么做。您需要像这样单独保存每一列
def profile(request , *args, **kwargs):
ids = request.user.id
user = User.objects.get(pk=ids)
if request.method == "POST":
if "bio" in request.POST and "location" in request.POST:
bio = request.POST["bio"]
location = request.POST["location"]
user.profile.bio = bio
user.profile.location = location
user.profile.save()
elif "image" in request.FILES:
image = request.FILES['image']
user.profile.Propic.save(image.name , image)
return render(request, "dashbord/user.html", {"user": user })
但它不起作用。这不是描述问题的正确方式。如果您收到任何错误(或异常),您应该发布完整的跟踪。还要注意,使用引导模板不会以任何方式阻止您使用Django表单。您收到的确切错误是什么?@a_python_用户实际上现在我在“pic”中收到了“MultiValueDictKeyError”,但我知道,这不是主要的问题,如果我删除它或解决错误,在保存时会有另一个错误,所以我不确定我是否用正确的方法来做。这就是我没有给出任何错误的原因。表单的主要目的是验证。如果您的用户不包含个人简历或位置,会发生什么情况?如果他们上传的不是图像,会发生什么?如果他们输入的字符串对于位置来说太长,会发生什么?Django表单将捕获并处理所有这些问题。
<form action="update/" method="post" enctype="multipart/form-data"> <!-- this line requered, otherwise your form won't take a photo -->
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" name="update" value="update">
<input type="submit" name="cancel" value="cancel">
</form>
def profile(request , *args, **kwargs):
ids = request.user.id
user = User.objects.get(pk=ids)
if request.method == "POST":
if "bio" in request.POST and "location" in request.POST:
bio = request.POST["bio"]
location = request.POST["location"]
user.profile.bio = bio
user.profile.location = location
user.profile.save()
elif "image" in request.FILES:
image = request.FILES['image']
user.profile.Propic.save(image.name , image)
return render(request, "dashbord/user.html", {"user": user })