python django web开发示例

本文详细介绍了使用Python Django框架进行web开发的步骤,包括创建应用、配置settings.py、设置数据库连接、定义Model、编写View和URL路由,以及处理非应用请求的相关文件操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 




   

2021第十一届mathorcup高校数学建模挑战赛目a求解自动驾驶中的车辆调头问题。在自动驾驶技术逐渐成熟的今天,如何实现车辆的安全、高效的调头是一个重要的实际问题。 针对这个问题,我们可以从以下几个方面进行分析解决: 首先,我们需要考虑周围环境的变化情况。通过车辆所处的位置、车辆前后左右的障碍物、行驶速度等信息,我们可以建立一个数学模型来描述车辆调头时的环境状况。 其次,我们可以使用数学优化方法来确定最优的调头策略。例如,可以使用动态规划算法来寻找最短路径,将调头过程划分为多个阶段,每个阶段中选择最佳动作,从而使车辆在有限的时间内尽快安全地完成调头操作。 另外,我们还可以引入机器学习人工智能的方法来提高自动驾驶车辆调头能力。通过训练神经网络,让车辆能够通过不断地学习适应环境变化来做出更加准确智能的调头决策。 最后,我们还需要考虑调头操作对其他车辆行人的影响,以确保调头过程的安全性流畅性。可以使用流体力学模型来分析车辆流的行为,从而制定合理的交通规则管控措施。 总之,自动驾驶中的车辆调头问题是一个复杂而又实际的挑战,需要综合应用数学建模优化算法、机器学习流体力学等知识方法来解决。通过不断的研究实践,我们可以不断改进完善自动驾驶技术,实现更加安全高效的车辆调头操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值