python开发一个网页的步骤_Python-Django搭建网站流程

news/2024/5/15 18:27:54/文章来源:https://blog.csdn.net/weixin_39755625/article/details/109940057

1. 创建Django REST framework工程

1.1手动创建工程文件夹

1.2进去工程文件夹内,执行命令:django-admin startproject web_project创建工程目录

1.3修改,添加目录结构

apps 存放Django的应用

libs 存放第三方的库文件

settings 存放配置文件的目录,分为开发dev和线上prod

utils 存放项目自己定义的公共函数或类等

docs 用于存放一些说明文档资料

1472531-20191202220204832-79978469.png

2.修改配置文件

2.1 将Django工程中的settings.py文件拷贝到新创建的settings目录下,并重命名为dev.py,并修改入口文件manage.py文件中配置文件路径。

1472531-20191202221458468-1753610474.png

2.2修改settings/dev.py 文件中的路径信息

我们将Django的应用放到了 工程目录/web_project/apps目录下,如果创建一个应用,比如users,那么在配置文件的INSTALLED_APPS中注册应用应该如下:

INSTALLED_APPS =[

...'web_project.apps.users.apps.UsersConfig',

]

为了还能像如下方式简便的注册引用,我们需要向Python解释器的导包路径中添加apps应用目录的路径。

INSTALLED_APPS =[

...'users.apps.UsersConfig',

]

我们将配置文件改为放在settings子目录下,所以 配置文件中的BASE_DIR指向的变为了工程目录/web_project/web_project/web_project.

使用sys.path添加/apps目录,即可添加apps应用的导包路径。

#Build paths inside the project like this: os.path.join(BASE_DIR, ...)

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))#添加导包路径

importsys

sys.path.insert(0, os.path.join(BASE_DIR,'apps'))

2.3 INSTALLED_APPS

pip install djangorestframework

在INSTALLED_APPS中添加rest_framework

INSTALLED_APPS =[

...'rest_framework',

]

2.4数据库配置

采用mysql数据库

DATABASES ={'default': {'ENGINE': 'django.db.backends.mysql','HOST': '127.0.0.1', #数据库主机

'PORT': 3306, #数据库端口

'USER': 'caicai', #数据库用户名

'PASSWORD': 'caicai', #数据库用户密码

'NAME': 'web_project' #数据库名字

}

}

注意:

记得在/web_project/web_project/__init__.py文件中添加

importpymysql

pymysql.install_as_MySQLdb()

进入mysql数据库,为项目创建数据库

create database web_project default charset=utf8;

为本项目创建数据库用户(不再使用root账户)

create user caicai identified by 'caicai'; 创建用户账号 meiduo, 密码 meiduo (由identified by 指明)

grant all on web_project.* to 'caicai'@'%'; 授权web_project数据库下的所有表(web_project.*)的所有权限(all)给用户caicai在以任何ip访问数据库的时候('caicai'@'%')

flush privileges; 刷新生效用户权限

2.5安装django-redis,并配置

执行命令进行安装:pip install django-redis

CACHES ={"default": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://10.211.55.5:6379/0","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",

}

},"session": {"BACKEND": "django_redis.cache.RedisCache","LOCATION": "redis://10.211.55.5:6379/1","OPTIONS": {"CLIENT_CLASS": "django_redis.client.DefaultClient",

}

}

}

SESSION_ENGINE= "django.contrib.sessions.backends.cache"SESSION_CACHE_ALIAS= "session"

除了名为default的redis配置外,还补充了名为session的redis配置,分别使用两个不同的redis库。

同时修改了Django的Session机制使用redis保存,且使用名为'session'的redis配置。

此处修改Django的Session机制存储主要是为了给Admin站点使用。

2.6本地化语言和时区

LANGUAGE_CODE = 'zh-hans'TIME_ZONE= 'Asia/Shanghai'

2.7日志

LOGGING ={'version': 1,'disable_existing_loggers': False,'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s'},'simple': {'format': '%(levelname)s %(module)s %(lineno)d %(message)s'},

},'filters': {'require_debug_true': {'()': 'django.utils.log.RequireDebugTrue',

},

},'handlers': {'console': {'level': 'DEBUG','filters': ['require_debug_true'],'class': 'logging.StreamHandler','formatter': 'simple'},'file': {'level': 'INFO','class': 'logging.handlers.RotatingFileHandler','filename': os.path.join(os.path.dirname(BASE_DIR), "logs/web_project.log"), #日志文件的位置

'maxBytes': 300 * 1024 * 1024,'backupCount': 10,'formatter': 'verbose'},

},'loggers': {'django': { #定义了一个名为django的日志器

'handlers': ['console', 'file'],'propagate': True,

},

}

}

2.8异常处理

修改Django REST framework的默认异常处理方法,补充处理数据库异常和Redis异常。

新建utils/exceptions.py

from rest_framework.views importexception_handler as drf_exception_handlerimportloggingfrom django.db importDatabaseErrorfrom redis.exceptions importRedisErrorfrom rest_framework.response importResponsefrom rest_framework importstatus#获取在配置文件中定义的logger,用来记录日志

logger = logging.getLogger('django')defexception_handler(exc, context):"""自定义异常处理

:param exc: 异常

:param context: 抛出异常的上下文

:return: Response响应对象"""

#调用drf框架原生的异常处理方法

response =drf_exception_handler(exc, context)if response isNone:

view= context['view']if isinstance(exc, DatabaseError) orisinstance(exc, RedisError):#数据库异常

logger.error('[%s] %s' %(view, exc))

response= Response({'message': '服务器内部错误'}, status=status.HTTP_507_INSUFFICIENT_STORAGE)return response

配置文件中添加

REST_FRAMEWORK ={#异常处理

'EXCEPTION_HANDLER': 'web_project.utils.exceptions.exception_handler',

}

3.实现第一个app应用

-----待补充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_778668.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wordpress 表格文字对齐_wordpress商品网站主页头版设置方法

前面好一佳说到了wordpress产品网站导航的设计技巧,解决客户实实在在的问题这是最主要的目的,我们把导航布局好了以后,客户看到导航很漂亮,接下来就是页面的布局了。wordpress产品网站提供了很多可以供好一佳编辑的内容&#xff0…

网站PR值

刚看这个东西,还以为是rp啦,结果发现写反了。查了一下资料,转贴如下。 PR是英文Pagerank 的缩写形式,Pagerank取自Google的创始人LarryPage,它是Google排名运算法则(排名公式)的一部分&#xff…

香港虚拟服务器网站怎么转出去,网站不要随便做域名跳转

网站不要随便做域名跳转2014-05-28大家应该有试过这种情况,刚进去的前两个网站,结果自动跳转到其它的页面了。这一点情况相信大家都不陌生了吧,这就是行业中所设计的跳转,有些人是通过简单的js跳转来实现的,方法也比较…

asp.net发布网站时三个选项的问题

发布网站的时候有三个选项,很多人都不知道到底是怎么用的,简单说说: 第一个选项指定发布后是不是可以修改aspx文件,如果勾选,则发布后的网站行为基本与ASP.NET 1.1一致,只要没有增删修改控件&…

网站流量诊断及分析技术

近一个月以来,笔者所在公司运营的网第([url]www.wondi.cn[/url])等网站访问速度感觉越来越慢。由于一直在专心处理别的事情,没有顾及过来。上周四上午开始,访问速度极其糟糕。 唐僧西天取经,经历九九八十一…

python爬取新闻网站标题_Python正则抓取新闻标题和链接的方法示例

Python这篇文章主要介绍了Python多线程编程(五):死锁的形成,本文讲解了死锁的概念、死锁示例、避免死锁的方法等内容,需要的朋友可以参考下 ... 脚本之家2832020-05-30 Python今天小编就为大家分享一篇Pytorch在NLP中的简单应用详解&#xff…

php网站用mssql怎么样,php连接MSsql server的五种方法总结

参考php手册,对php连接sql server系列做出个小结。主要有五种方式:一、通过mssql_系列函数mssql_系列函数主要针对php5.3以下的版本和sqlserver2000及以上版本使用。在php.ini中将;extensionphp_mssql.dll;extensionphp_msql.dll;extensionphp_pdo_mssql…

如何使用Orchard搭建敏捷个人的网站(2)

在如何使用Orchard搭建敏捷个人的网站(1)中讲解了如何使用Orchard搭建一个简易的敏捷个人内容网站,第一篇主要讲解了如何下载安装主题、增加blog、制作菜单等,今天我们继续讲解一下如何增加搜索功能、增加自定义的内容类型以及显示…

网站开发必备-快速浏览Asp.Net网站绿色小工具

< DOCTYPE html PUBLIC -WCDTD XHTML TransitionalEN httpwwwworgTRxhtmlDTDxhtml-transitionaldtd> 选择此工具的理由&#xff1a;1.快速浏览Asp.Net网站 2.小巧 3.绿色 点击下载 前提&#xff0c;系统必须安装 .NET Framework 方法一. 将此程序放在网站根目录&#xff…

利用 squid 反向代理提高网站性能

本文在介绍 squid 反向代理的工作原理的基础上&#xff0c;指出反向代理技术在提高网站访问速度&#xff0c;增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下&#xff0c;利用 DNS 轮询和 Squid 反向代理技术&#xff0c;实现了网站的负载均衡&#xff0c;从而…

我记录网站综合系统 -- 技术原理解析[9:HttpMethodChecker流程]

源代码位置&#xff1a;\Web\Mvc\Processors&#xff1a;HttpMethodChecker.cs Config -> wojilu.Web.Mvc.CoreHandler.ProcessRequest - > wojilu.Web.Mvc.CoreHandler.ProcessRequest: ProcessContext.Begin ->Ro…

介绍一个Android UI设计网站

为什么80%的码农都做不了架构师&#xff1f;>>> 十分有趣。“Ice Cream Sandwich (Android 4.0) 是我们目前为止最大的一次重新设计——对用户和开发者皆是如此。我们用新的交互和样式增强了UI框架&#xff0c;能让你创建比以往更加简单更加炫丽的Android 应用。为帮…

网站性能

【概述】 在这一章节&#xff0c;我们的主题聚焦在基础设施建设上。 Http Compression&#xff08;压缩&#xff09;Content Expirations (内容过期&#xff09;Content Distribution Networks - CDN(内容分发网络)Etags &#xff08;E标签&#xff09;去掉没必要的Http header…

网站运维,运营经典的Firefox插件--助你提高工作效率

最近由于工作需要重新研究web的架构&#xff0c;及运营、运维相关技术。 谈到web-日常使用最多的软件工具之一就是网页浏览器&#xff0c;其中对Firefox情有独钟&#xff0c;因为它有着丰富的插件支持。 我来谈谈我个人的Firefox的几个提高工作效率的插件&#xff1a; 以下是我…

学用MVC4做网站二:用户组

用户组这块要实现的功能如下&#xff1a; 序 一、用户 二、用户组 2.1浏览用户组 2.2添加用户组 2.3修改用户组 2.4删除用户组 用户组类型应该有匿名&#xff0c;受限&#xff0c;正常&#xff0c;和特殊几种类型。 设计这些类型的目的是为了以后权限管理做准备&#xff0c;以后…

图标集锦:10套免费的社交媒体 社交网站图标

社交网络是最近几年互联网领域最热门的关键词之一&#xff0c;如今社会网络化媒体也成为我们信息获取和传播的重要途径&#xff0c;很多网站都有把内容分享到社交媒体的功能。 社交媒体图标作为向用户传递信息的重要媒介&#xff0c;不管是在网页还是 Web 应用程序中都非常需要…

探索 Windows Azure 网站中的自动伸缩功能

&#xfeff;&#xfeff;去年10月,我们发布了若干针对 WindowsAzure平台的更新&#xff0c;其中一项更新是添加了基于日期的自动伸缩调度支持&#xff08;在不同的日期设置不同的规则&#xff09;。 在这篇博客文章中&#xff0c;我们将了解自动伸缩的概念&#xff0c;并了解如…

提高网站并发性的解决方案

为什么80%的码农都做不了架构师&#xff1f;>>> 我在Cernet做过拨号接入平台的搭建&#xff0c;而后在Yahoo3721负载搜索引擎前端平台开发&#xff0c;又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作&#xff0c;同时 自己接触和开发过不少大中型网站的模块&am…

自动浏览器_微软彻底埋葬IE浏览器:当网站不支持时自动打开Edge浏览器

1995年&#xff0c;8月16日&#xff0c;微软正式推出了Internet Explorer(IE)浏览器1.0版&#xff0c;作为Windows 95 Plus增强包的一个附加软件。Internet Explorer 1.0这是微软为了抵抗当时主流的网景浏览器(Netscape Navigator)而开发的自主网络浏览器。Windows 95 Plus25年…

竞拍网站服务器配置,GOM引擎新区竞拍脚本,GOM传奇服务端设置竞拍的方法和教程...

20190801221527.png (881.14 KB, 下载次数: 1)2019-8-1 22:19 上传[main]#if#actLOADVAR HUMAN 竞拍花费 ..QuestDiary数据文件竞拍花费.txt#say开区一小时内拍卖本服唯一**时装,只卖一件,之后再无机会获得!拍卖每次加价100灵符,竞拍失败后必须先领回灵符之后才能再次参与竞拍!…