Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何保存来自多个屏幕的数据_Python_Django_Sqlite - Fatal编程技术网

Python 如何保存来自多个屏幕的数据

Python 如何保存来自多个屏幕的数据,python,django,sqlite,Python,Django,Sqlite,我有一个名为“Person”的类,有4个字段:姓名、电话、文档、照片。在第一个屏幕中,我有两个字段:“姓名”和“电话”。在第二个字段中,我有一个字段:“document”。在第三个字段中,我有一个字段:“photo”。我已经在数据库中保存了字段“name”和“phone”(表“Person”)。我不知道如何将其他字段“document”和“photo”保存在同一个表“Person”中 URL.py: urlpatterns = [ url(r'^$', views.id15_home,

我有一个名为“Person”的类,有4个字段:姓名、电话、文档、照片。在第一个屏幕中,我有两个字段:“姓名”和“电话”。在第二个字段中,我有一个字段:“document”。在第三个字段中,我有一个字段:“photo”。我已经在数据库中保存了字段“name”和“phone”(表“Person”)。我不知道如何将其他字段“document”和“photo”保存在同一个表“Person”中

URL.py:

urlpatterns = [
    url(r'^$', views.id15_home, name='id15_home'),
    url(r'^create/$', views.id15_create, name='id15_create'),
    url(r'^(?P<id>\d+)/document/$', views.id15_document, name='id15_document'), 
    url(r'^(?P<id>\d+)/photo/$', views.id15_photo, name='id15_photo'),
models.py:

class pessoafisica(models.Model):

    name = models.CharField('Nome', max_length=100, default='', blank=False)
    telephone= models.CharField('Telefone', max_length=10, default='', blank=False)
    document = models.FileField(null=True, default='', blank=True)
    photo = models.FileField(null=True, default='', blank=True)

    # ----- Tratar url quando passa o "id" de uma tela para outra ----- #
    def get_absolute_url(self):
        return reverse("id15_documento", kwargs={"id": self.id})
        return "/id15/%s" %(self.id)
forms.py:

class id15Form(forms.ModelForm):
    name = forms.CharField(required=True)
    telephone = forms.CharField(required=True)
    class Meta:
        model = pessoafisica
        fields = ('name',
                  'telephone')
id-15.html

<h1> hellow</h1>
        <a href= '{% url "id15_create" %}'>
            <p><button>Criar minha ID 15</button></p>
        </a>
hellow
cadastro.html

<form class=" bd-form-3 " action="" name="form-name" method="post" enctype="multipart/form-data">

<script>
function caps(element){
    element.value = element.value.toUpperCase();
}
</script>

    <input type="text" name='name' id="name" class="bd-form-input" onkeyup="caps(this)">
    {{form.name.errors}}
    <input type="text" name='telephone' id="telephone" class="bd-form-input" onkeyup="caps(this)">
    {{form.telephone.errors}}

函数帽(元素){
element.value=element.value.toUpperCase();
}
{{form.name.errors}
{{form.telephone.errors}
document.html

<html>
       <form action="" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <head>`enter code here`
            <meta charset="UTF-8">
            <title>documento</title>
        </head>
        <body>
            <h1>teste de documento</h1>
            <label>Upload do documento</label></br>
            <input type="file" name='docment.url' id="document" ></br></br>
            {{form.document.error}}

                <button class="btn btn-lg btn-primary btn-block"  type = "submit" >
                Cadastrar </button>
        </body>
        </form>
        </html>

{%csrf_令牌%}
`在这里输入代码`
文件
文档测试
上传文件


{{form.document.error} 地籍
您需要保留用户ID(您可以从刚刚创建的行的模型中获取该ID)

如果需要将会话映射到用户ID,最好的解决方案可能是在存储对象后立即使用ID注册会话;然后,在下一页的端点上,您只需查找当前会话的ID。(但是,你也需要为那些中途放弃注册并尝试使用其他浏览器的人设计一些东西。)

如果你不需要它,不要仅仅为了这个而构建它。相反,只需将ID放在第二页的隐藏表单字段中,这样当您取回表单时,它就可以使用了


不管是哪种方式,现在您已经有了ID,您可以按ID查找
Person
对象。

您需要给我们一个简单的代码示例,并解释您研究/尝试/不理解的内容,以便在这里得到一个好的答案。但简短的版本是,您需要以某种方式持久化用户。例如:(1)将ID从第一个屏幕传递到第二个屏幕(例如,作为隐藏表单字段),以便知道要更新的行。(2) 添加将会话映射到用户ID的方法;第一个屏幕可以用部分创建的用户的ID注册当前会话,第二个屏幕可以查找会话的ID,依此类推。因此,我已经将ID从第一个屏幕传递到第二个屏幕。这没关系。现在,在第二个例子中,我需要上传一个文档并保存在同一个记录中;它的用户界面很烂,结果也不可读。更重要的是,你的问题应该包含回答问题所需的所有信息,而不必阅读评论。因此,您要么需要编辑问题,要么创建一个新问题。通常是前者,但在这种情况下,我认为你有一个全新的问题,所以创造一个新的问题。而且这次一定要包括一个。是的,我在第二页有一个de ID。我只是不知道如何保存在这第二页。我必须在views.py'def id15_文档中输入的内容。@Patricia正如我在对问题的评论中所说的,如果您有新问题,请创建一个新问题。并确保这次是MCVE。我不明白,问题是相同的。我如何在第二个屏幕中保存该字段?
<html>
       <form action="" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <head>`enter code here`
            <meta charset="UTF-8">
            <title>documento</title>
        </head>
        <body>
            <h1>teste de documento</h1>
            <label>Upload do documento</label></br>
            <input type="file" name='docment.url' id="document" ></br></br>
            {{form.document.error}}

                <button class="btn btn-lg btn-primary btn-block"  type = "submit" >
                Cadastrar </button>
        </body>
        </form>
        </html>