Python POST表单未写入Django数据库

Python POST表单未写入Django数据库,python,django,django-forms,django-templates,django-views,Python,Django,Django Forms,Django Templates,Django Views,我在从html表单获取数据以将新内容写入sqlite数据库时遇到了一些问题。我使用了类似于编辑最初通过shell创建的现有条目(联系人)的方法,但在创建新条目时它似乎不起作用。当我提交表单时,它显示相同的页面,但为空,也不会重定向我 我的HTML: <form action="{% url 'contactmanager:addnewcontact' %}" method="POST"> {% csrf_token %} <ul> <li><la

我在从html表单获取数据以将新内容写入sqlite数据库时遇到了一些问题。我使用了类似于编辑最初通过shell创建的现有条目(联系人)的方法,但在创建新条目时它似乎不起作用。当我提交表单时,它显示相同的页面,但为空,也不会重定向我

我的HTML:

<form action="{% url 'contactmanager:addnewcontact' %}" method="POST">
{% csrf_token %}
<ul>
    <li><label>First Name: </label> <input type="text" name="fname" id="fname"/></li>
    <li><label>Last Name: </label> <input type="text" name="lname" id="lname"/></li>
    <li><label>Email: </label> <input type="text" name="email" id="email"/></li>
    <li><label>Phone Number: </label> <input type="text" name="pnumber" id="pnumber"/></li>
    <li><label>Notes: </label> <input type="text" name="notes" id="notes"/></li>
</ul>
<input type="submit" value="Create" />
</form>
My models.py:

class ContactList(models.Model):
    fname = models.CharField(max_length=200)
    lname = models.CharField(max_length=200)
    def __str__(self):
        contact_name = self.fname + ' ' + self.lname
        return contact_name
class ContactDetails(models.Model):
    fname = models.ForeignKey(ContactList, on_delete=models.CASCADE)
    lname = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    pnumber = models.CharField(max_length=15)
    notes = models.TextField(default = ' ')
    def __str__(self):
        return self.email
仅供参考:fname是将ContactDetails模型与ContactList关联的外键


我的ORM查询有问题吗?它们与我以前通过python manage.py shell创建一些初始“联系人”时使用的类似。

实际上,您应该在这里使用Django表单框架;我已经吸取了教训。但就这个项目而言,这是最后一个障碍,所以我现在就要开始了。你能发布你的模型吗?
contactmanager/index.html
是空表单吗?完成了。html只是在ContactList模型中循环浏览联系人并显示它们。所以我希望新创建的会出现在那里。
class ContactList(models.Model):
    fname = models.CharField(max_length=200)
    lname = models.CharField(max_length=200)
    def __str__(self):
        contact_name = self.fname + ' ' + self.lname
        return contact_name
class ContactDetails(models.Model):
    fname = models.ForeignKey(ContactList, on_delete=models.CASCADE)
    lname = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    pnumber = models.CharField(max_length=15)
    notes = models.TextField(default = ' ')
    def __str__(self):
        return self.email