django框架中,将views.py或models.py拆分成多个文件

部署运行你感兴趣的模型镜像

在python的django框架中,应用中默认给的只有views.py和models.py,但是在实际开发中,由于业务需要,会存在很多的视图方法和模型,但是将这么多的视图和模型,都放在同一个文件中,会给开发增加很多这样或者那样的问题。以下是记录将视图和模型拆分成不同的文件的一个方法,个人感觉比较合适,而且是很好用的。

视图文件拆分:

1.在应用中,新建一个views目录。
2.将应用中的views.py文件移动到views目录。
3.在views目录下创建一个__init__.py文件。
4.在__init__.py文件中添加如下代码:

from .views import * # 这里是2步骤中移进去的views.py文件中所有的方法
from .your_views_file import * # 这是新创建的其他视图文件,
							   # 例如:新创建的视图文件名是myadminuser.py
							   # 这里的写法就是: from .myadminuser import *
							   # 其他文件类似这种写法

模型文件拆分

1.在应用中创建一些新的models目录。
2.将应用中的models.py文件移动到models目录
3.在models目录中创建一个__init__.py文件
4.在__init__.py文件中添加如下代码:

from .models import * # 这是步骤2中移动到models目录中的models.py文件中的所有方法
from .your_models_file import * # 这是新创建的其他模型文件
								# 例如: 新模型文件为:adminuser.py, 模型类为:class AdminUser
								# 这里的写法为:from .adminuser import AdminUser
								# 其他的模型文件也是如此写法
								# 在视图文件中的应用则是:from ..models.adminuser import AdminUser

这种写法,说白了其实就是将模型转为了一个package包

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

Traceback (most recent call last): File "C:\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 124, in inner_run autoreload.raise_last_exception() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 86, in raise_last_exception raise _exception[1] File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\__init__.py", line 394, in execute autoreload.check_errors(django.setup)() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\registry.py", line 116, in populate app_config.import_models() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\config.py", line 269, in import_models self.models_module = import_module(models_module_name) File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\apps\question\models\__init__.py", line 1, in <module> from .category import TblQuestionCategory File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\apps\question\models\category.py", line 4, in <module> class TblQuestionCategory(models.Model): File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\db\models\base.py", line 368, in __new__ new_class._meta.apps.register_model(new_class._meta.app_label, new_class) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\registry.py", line 234, in register_model raise RuntimeError( RuntimeError: Conflicting 'tblquestioncategory' models in application 'question': <class 'apps.question.models.category.TblQuestionCategory'> and <class 'question.models.category.TblQuestionCategory'>. (.venv) PS D:\pythonSpace\django-vue3.2-online-exam-master\backend> pip remove question ERROR: unknown command "remove" (.venv) PS D:\pythonSpace\django-vue3.2-online-exam-master\backend> pip uninstall question WARNING: Skipping question as it is not installed. (.venv) PS D:\pythonSpace\django-vue3.2-online-exam-master\backend> python manage.py runserver Watching for file changes with StatReloader Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 124, in inner_run autoreload.raise_last_exception() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 86, in raise_last_exception raise _exception[1] File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\__init__.py", line 394, in execute autoreload.check_errors(django.setup)() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\registry.py", line 116, in populate app_config.import_models() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\config.py", line 269, in import_models self.models_module = import_module(models_module_name) File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\apps\question\models\__init__.py", line 1, in <module> from .category import TblQuestionCategory File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\apps\question\models\category.py", line 4, in <module> class TblQuestionCategory(models.Model): File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\db\models\base.py", line 368, in __new__ new_class._meta.apps.register_model(new_class._meta.app_label, new_class) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\apps\registry.py", line 234, in register_model raise RuntimeError( RuntimeError: Conflicting 'tblquestioncategory' models in application 'question': <class 'apps.question.models.category.TblQuestionCategory'> and <class 'question.models.category.TblQuestionCategory'>. (.venv) PS D:\pythonSpace\django-vue3.2-online-exam-master\backend> grep -r "class tblquestioncategory" ./question/ grep : 无法将“grep”项识别为 cmdlet、函数、脚本文件可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。 所在位置 行:1 字符: 1 + grep -r "class tblquestioncategory" ./question/ + ~~~~ + CategoryInfo : ObjectNotFound: (grep:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException (.venv) PS D:\pythonSpace\django-vue3.2-online-exam-master\backend> python manage.py runserver Watching for file changes with StatReloader Performing system checks... Exception in thread django-main-thread: Traceback (most recent call last): File "C:\Python310\lib\threading.py", line 1009, in _bootstrap_inner self.run() File "C:\Python310\lib\threading.py", line 946, in run self._target(*self._args, **self._kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper fn(*args, **kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\commands\runserver.py", line 134, in inner_run self.check(**check_kwargs) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\management\base.py", line 492, in check all_issues = checks.run_checks( File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\checks\registry.py", line 89, in run_checks new_errors = check(app_configs=app_configs, databases=databases) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\checks\urls.py", line 16, in check_url_config return check_resolver(resolver) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\core\checks\urls.py", line 26, in check_resolver return check_method() File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\urls\resolvers.py", line 531, in check for pattern in self.url_patterns: File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\functional.py", line 47, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\urls\resolvers.py", line 718, in url_patterns patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\functional.py", line 47, in __get__ res = instance.__dict__[self.name] = self.func(instance) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\urls\resolvers.py", line 711, in urlconf_module return import_module(self.urlconf_name) File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1050, in _gcd_import File "<frozen importlib._bootstrap>", line 1027, in _find_and_load File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 688, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 883, in exec_module File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\backend\urls.py", line 20, in <module> from drf_spectacular.views import SpectacularJSONAPIView, SpectacularRedocView, SpectacularSwaggerView File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\drf_spectacular\views.py", line 15, in <module> from rest_framework.views import APIView File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\views.py", line 18, in <module> from rest_framework.schemas import DefaultSchema File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\schemas\__init__.py", line 33, in <module> authentication_classes=api_settings.DEFAULT_AUTHENTICATION_CLASSES, File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\settings.py", line 227, in __getattr__ val = perform_import(val, attr) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\settings.py", line 170, in perform_import return [import_from_string(item, setting_name) for item in val] File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\settings.py", line 170, in <listcomp> return [import_from_string(item, setting_name) for item in val] File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\rest_framework\settings.py", line 179, in import_from_string return import_string(val) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\module_loading.py", line 30, in import_string return cached_import(module_path, class_name) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\django\utils\module_loading.py", line 15, in cached_import module = import_module(module_path) File "C:\Python310\lib\importlib\__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\utils\auth\authentication.py", line 15, in <module> from utils.auth.jwt_util import JwtUtil File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\utils\auth\jwt_util.py", line 9, in <module> from jose import jwt File "D:\pythonSpace\django-vue3.2-online-exam-master\backend\.venv\lib\site-packages\jose.py", line 546 print decrypt(deserialize_compact(jwt), {'k':key}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?
最新发布
07-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值