1.创建app
选中项目名右击---django---create application 输入名称product
2.修改settings.py
在installed_apps中添加product
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'product',
]
创建templates用
'DIRS': [BASE_DIR+"/templates",],
于存放文件,修改配置文件访问目录
修改静态文件的存放目录,如js,css和图片
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR,"templates/static"),
]
添加日志配置
LOGGING = {
'version': 1,#指明dictConnfig的版本
'disable_existing_loggers': False,# 设置True将禁用所有的已经存在的日志配置
'formatters': {#格式器
'verbose': {#详细
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {#简单
'format': '%(levelname)s %(message)s'
},
},
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {#处理器,在这里定义了三个处理器
# 'null': {#Null处理器,所有高于(包括)debug的消息会被传到/dev/null
# 'level':'DEBUG',
# 'class':'django.utils.log.NullHandler',
# },
'console':{#流处理器,所有的高于(包括)debug的消息会被传到stderr,使用的是simple格式器
'level':'NOTSET',
'class':'logging.StreamHandler',
'formatter': 'simple'
},
'mail_admins': {# 邮件处理器,所有高于(包括)而error的消息会被发送给站点管理员,使用的是special格式器
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
'filters': ['require_debug_false']
},
'file_handler': {# 文件处理器,所有高于(包括)而error的消息会被发送给站点管理员,使用的是special格式器
'level': 'NOTSET',
'class': 'logging.handlers.TimedRotatingFileHandler',
'when':'W0', # 日志文件每周第一天翻转
'filename':BASE_DIR+"/templates/log/out.log", # 日志文件的存储地址
'backupCount':500, # 最多可以保存500个文件
'formatter':'verbose'
}
},
'loggers': { # 定义了三个记录器
'django': { # django记录器是捕捉所有消息的记录器,没有消息是直接发往django记录器的。使用null处理器,所有高于(包括)info的消息会被发往null处理器,向父层次传递信息
'handlers':['console','file_handler'],
'propagate': True,
'level':'INFO',
},
'django.request': {#所有高于(包括)error的消息会被发往mail_admins处理器,消息不向父层次发送
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
# 'myproject.custom': {# 所有高于(包括)info的消息同时会被发往console和mail_admins处理器,使用special过滤器
# 'handlers': ['console', 'mail_admins'],
# 'level': 'INFO',
# 'filters': ['special']
# }
}
}
添加数据库连接
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', 'PORT': '3306', 'NAME': 'pythondev', 'USER': 'root', 'PASSWORD': 'root', } }
3.在product目录下的model.py中,创建Entity类
from django.db import models
from django.contrib import admin
from cgi import maxlen
class Test1(models.Model) :
title = models.CharField(max_length=150)
context = models.TextField()
createDate = models.DateTimeField()
element = models.CharField(max_length=150)
path = models.CharField(max_length=150)
class Meta:
#app_label = 'app01' #由于该model连接default数据库,所以在此无需指定
db_table = 'test1' #不加的话,表名会有前缀
4.修改product目录下的views,用于处理前段请求
from django.shortcuts import render
from db.models import Test1
from django.template import loader,Context
from django.http.response import HttpResponse
from django.shortcuts import redirect,reverse
import logging
def toArchive(request):
test1= Test1.objects.all()
t = loader.get_template('archive.html')
c = {'test1': test1}
return HttpResponse(t.render(c))
def addArchive(request):
# test1= Test1.objects.all()
# c = {'test1': test1}
# return render(request, "archive.html", c)
if request.method == 'POST':
element = request.POST['element']
path = request.POST['path']
title = request.POST['title']
t = Test1(element=element,path=path,title=title);
t.save()
logger = logging.getLogger('django')
logger.info("这是个日志");
logger.error("这是个错误日志");
return redirect(reverse('db:toAr'))
4.修改product目录下的urls.py文件
from django.contrib import admin
from django.urls import path
from product.views import addArchive
from product.views import toArchive
app_name = 'product'
urlpatterns = [
path('test1/',toArchive,name='toAr'), ##重定向url
path('addArchive/',addArchive),
]
5.创建根目录下view.py文件和url.py文件,用于处理非app的请求
view.py
from django.shortcuts import render
def hello(request):
context = {}
context['c'] = "this is a hello"
# return render(request, "hello.html", context)
return render(request, "index.html", context)
url.py
from django.contrib import admin
from django.urls import path,include
from . import view
from product.views import addArchive
from product.views import toArchive
urlpatterns = [
path('admin/', admin.site.urls),
path('hello/',view.hello),
path('test1/',toArchive),
path('addArchive/',addArchive),
path('productTest/',include('product.urls')), ##请求会转发到product中处理
]
6._init_.py文件,使用pymysql
import pymysql
pymysql.install_as_MySQLdb()