pip install virtualenvwrapper-win
mkvirtualenv <虚拟机名称>
workon
workon <虚拟机名称>
rmvirtualenv <虚拟机名称>
pip install django==3.1
django-admin startproject <专案名称>
python manage.py runserve
开启本地服务器,预设 8000 port 目录结构
| manage.py
\---djangoAPI
asgi.py
settings.py
urls.py
wsgi.py
__init__.py
manage.py
: django命令包 参考
asgi.py
: ASGI兼容的Web服务器上的入口settings.py
: 项目配置文件(DB、金钥、引用apps...)urls.py
: 主要路由器(各功能urls可於此集中)wsgi.py
: WSGI兼容的Web服务器上的入口__init__.py
: 一个空文件,告诉python这个目录是一个python包 参考
python manage.py startapp <功能名称>
目录结构
| manage.py
\---testSetting
| admin.py
| apps.py
| models.py
| tests.py
| views.py
| __init__.py
| urls.py(自行定义)
|
\---migrations
__init__.py
admin.py
: 管理员设置migrations
: 资料库创建纪录models.py
: 资料库模型views.py
: 功能逻辑urls.py
: 该功能路由urls.py
档案 from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
]
from django.urls import path, include
urlpatterns = [
path('testSetting/', include('testSetting.urls'))
]
# 於setting.py中配置
# Database 路由连线设置
DATABASES = {
# 预设sqlite
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
# MSSQL连线配置
'testSetting': {
'ENGINE': 'sql_server.pyodbc',
'NAME': '<DB名称>',
'USER': '<使用者>',
'PASSWORD': '<密码>',
'HOST': '<IP>',
'PORT': '<port>',
'OPTIONS': {
'driver':'SQL Server Native Client 11.0',
'MARS_Connection': True,
}
}
}
# Database 路由
# database_router.DatabaseAppsRouter 需自行新增,可参考官方配置
DATABASE_ROUTERS = ['<projectName>.database_router.DatabaseAppsRouter']
DATABASE_APPS_MAPPING = {
'testSetting': 'testSetting'
}
# 这是一个最基本的范例
class test(models.Model): # 继承models
testTest = models.CharField(max_length=5) # 对应资料表栏位
class Meta:
managed = False
app_label = 'testSetting' # DB路由的名称
db_table = "test" # 资料表名称
例如银行交易,A转帐给B,需要A扣款与B入帐同时成功,如果A扣款成功,但B帐号冻结等等,则A的钱就不见了,这就是我们需要解决的问题。
# 功能实现 - 使用装饰器
from django.db import transaction # 载入回滚工具
@transaction.atomic(using="DBName")
def atomicTest():
# 设定回滚位置,如果已下功能有失败的部份,就会回到这个储存点
sid = transaction.savepoint(using="DBName")
try:
# 此处执行修改、新增DB...
# 因为使用了atomic修饰词,所以DB不会自动提交commit(即不会修正、新增...)
# 送出事务commit(此处送出,才算真的成功)
transaction.savepoint_commit(sid, using="DBName")
except ValueError as e:
# 自定义错误,将状态回滚到sid(储存点)
transaction.savepoint_rollback(sid, using="DBName")
except Exception as e:
# 未知错误,将状态回滚到sid(储存点)
transaction.savepoint_rollback(sid, using="DBName")
到目前为止,我们有了时间,可以输入,还可以对「物件」进行位移,看来可以开始让「小铁(LittleIr...
this&Object Prototype Ch3 Object 我的天,真的太久没翻你,试...
适用人员: 技术人员(开发人员)。 适用法规: 资通安全责任等级分级办法 - 附表十资通系统防护基准...
前言 今日想要介绍 Deep Link,这边我只有接收 deeplink 的连结实作,并没有使用动态...
-NIST SDLC 和 RMF 资讯系统所有者应准备授权包并将其提交给适当的 授权操作(ATO)...