Python 如何让用户在不使用Django表单的情况下手动在Django中保存或编辑其个人资料信息

Python 如何让用户在不使用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)

我正在做一个引导模板。但是,在数据库中保存配置文件信息会带来很大的问题。这是我的密码。我不知道我是否做对了。但它不起作用

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):
      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 })