我可以创建一个表单和视图的文件夹,并使用__init__.py文件,如模型和测试?

时间:2018-04-05 16:46:44

标签: django django-forms django-views

我希望将我的观点和表单分开,就像你可以使用模型一样。您是否能够创建视图和表单的目录,如果是,那么每个 init .py文件中的内容。

更新

我制作了我的文件夹,但我一直收到错误。这是我的所有代码信息:

myproject结构(缩写):

myproject/
    myproject/
    name/
        forms/
            __init__.py
            name_form.py
        models/
            __init__.py
            name_model.py
        urls.py
        views/
            __init__.py
            name_view.py

模型/的初始化的.py

from .name_model import Name

模型/ name_model.py

from django.db import models
from django.urls import reverse


class Name(models.Model):
    ...

forms/__init__.pyviews/__init__.py是空白文件。

urls.py

from django.urls import path

from name.views import name_view


app_name = 'name'
urlpatterns = [
    path('', views.name_view, name='name-view'),
]

形式/ name_form.py

from django.forms import ModelForm, TextInput


from name.models import Name


class NameForm(ModelForm):

    class Meta:
        model = Name

视图/ name_view.py

from django.shortcuts import render, redirect


from name.forms import NameForm


def name_view(request):
    ...

我在终端中运行python3 manage.py makemigrations并获取:

/myproject/name/views/name_view.py", line 4, in <module>
    from name.forms import NameForm
ImportError: cannot import name 'NameForm'

如果没有ModelForm我认为你不能成为model,我会运行python3 manage.py migrate并得到同样的错误。

我创建了一个项目来隔离这个问题。没有它工作的文件夹,除非我搞砸我的原始代码试图让它工作。

1 个答案:

答案 0 :(得分:2)

只需为您的表单创建一个文件夹和一个文件夹,然后将空__init__.py文件放入每个文件夹即可。 __init__.py文件的目的是告诉python将文件夹视为模块。然后将views.py文件和forms.py文件放在各自的目录中,现在就可以了...

from myproject.path.to.views import MyView
from myproject.path.to.forms import MyForm

......好像是任何其他模块。它是什么。