欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python django web开发示例 pythondjangoweb 

程序员文章站 2022-05-28 12:56:54
...

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()

 

 

 

   

 

 

 

 

相关标签: python django web