【问题标题】:Why am I not POSTing data to database Django/Python为什么我不将数据发布到数据库 Django/Python
【发布时间】:2021-08-14 08:19:35
【问题描述】:

我无法将数据导入我的数据库我错过了什么。遵循了几个教程,尝试了我自己的调整,但到目前为止还没有运气。我没有收到任何错误,但是当我在表单上单击提交时,我的数据库没有填充。

我的观点

def createUser(request):
    # form = UserForm()
    args = {}    

    if request.method=='POST':
        userform = UserForm(request.POST)
        petform = PetForm(request.POST)

        if userform.is_valid() and petform.is_valid():
            newuser = userform.save()
            newpet = petform.save(False)

            newpet.newuser = newuser
            newpet.save()
            return render(request, 'pet_list.html' )
    else:
        userform = UserForm()
        petform = PetForm()

    args.update(csrf(request))
    args['userform'] = userform
    args['petform'] = petform
    return render(request, 'add_user_pet.html', args)

我的模板

  <form action="/ " method="POST" >
    {% csrf_token %} 
    <h3 class="details">User Info</h3>
      {{userform}}
      <h3 class="details">Pet Info</h3>
      {{petform}}

  <input type="submit"/>
  </form>

Form.py

class UserForm(forms.ModelForm):
    name = NameField()
    email = forms.CharField(label='E-mail',widget=forms.TextInput(attrs={"placeholder":"Whats your email"}))

    class Meta:
        model = User
        fields = ['name', 'email']

#################################################


class PetForm(forms.ModelForm):

    class Meta:
        model = Pet
        fields = [
            'name', 
            'submitter',
            'species',
            'breed',
            'description',
            'sex',
            'age'
            ]

我的网址.py

urlpatterns = [
    path('', views.home, name='home'),
    path('user_list', views.userlist, name='userlist'),
    path('pet_list', views.petList, name='petlist'),
    path('user_pet', views.userPet, name='userpet'),
    path('add_user_pet', views.createUser, name='add_user_pet')
    path('user_detail/<int:user_id>', views.userdetail, name='detail'),

【问题讨论】:

  • 分享您的urls.py

标签: python django database sqlite


【解决方案1】:

您的表单操作指向“/”,这将是主视图,但您想调用“add_user_pet”来将您的 POST 定向到 createUser 视图。

 <form action="/ " method="POST" >

应该是

 <form action="add_user_pet" method="POST" >

更“django”的方式是不直接放置 url,而是使用您在 urlspatterns 中定义的路径名称:

 <form action="{% url 'add_user_pet' %}" method="POST" >

这样你就使用了 urlspatterns 名称。

【讨论】:

  • 试过了,但仍然没有填充数据库。
  • 1) 您是否在服务器终端中看到 POST 请求? 2) 你得到 pet_list.html 渲染了吗? 3) 你的 is_valid() 检查的结果是什么......我会用打印调试,看看会发生什么一步一步
  • 尝试这种方法....会让你知道结果
  • 我现在可以在终端中看到请求的数据,并且现在正在呈现 pet_list。但由于某种原因,表格无效....
  • 谢谢。它现在可以工作了......在我的视图文件中,我将 newpet.newuser 更改为 newpet.user。作为“用户;”是我的宠物模型中的外键。还修复了一些制表符空格。这与您的输入一起解决了它。
猜你喜欢
  • 2021-11-22
  • 2022-01-18
  • 2021-10-03
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-03
  • 2023-03-20
相关资源
最近更新 更多