Python/Django编程实践指南

2024-09-05 22:04

本文主要是介绍Python/Django编程实践指南,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Python/Django编程实践指南

####Python/Django代码风格
PEP8是Python官方推荐的代码风格指南标准。

  • 使用4个空格作为缩进
  • 最外层函数和类使用两个空行分隔
  • 类中的方法使用一个空行分隔

PEP8建议按如下三种方式分组导入包

  • 标准库导入
  • 第三方相关包导入
  • 本地应用或库导入

比如:一个Django项目,包导入看起来应该是:

#标准库
from math import sqrt
from os.path import abspath#Django导入
from django.db import models
from django.utils.translation import ugettext_lazy as _#第三方应用导入
from django_extensions.db.models import TimeStampedModel#导入自己的应用
from splits.models import BananaSplit

(当然这里的注释只是对本例的说明,实际代码中并不需要写这些注释)

####使用相对导入
使用相对导入,更易于app的移植、重用、重命名。比如:下面的cones app,在view中使用硬编码使用cones 包,

# cones/views.py
# Hard coding of package name
from django.views.generic import CreateView
# DON’T DO THIS: Hardcoding of the 'cones' package
from cones.models import WaffleCone
from cones.forms import WaffleConeForm
class WaffleConeCreateView(CreateView):model = WaffleConeform_class = WaffleConeForm 
  • 现在假如你想在其他project重用这个cones app,但是刚好这个project中已经有一个叫cones 的app了,这样就会造成名字的冲突。
  • 如果想像把cones改名,你又得在多次更改cones。

推荐的方式应该是:

# cones/views.py
from django.views.generic import CreateView
# Hard coding of the 'cones' package
from .models import WaffleCone
from .forms import WaffleConeForm
class WaffleConeCreateView(CreateView):model = WaffleConeform_class = WaffleConeForm 

####避免使用 import *
在99%的情况下都因该明确import具体的模块名字

from django import forms
from django.db import models

绝对不要这样干:

from django.form import *
from django.db.models import *

不要这样做的原因是避免隐含的加载其他Python模块的locals把当前的模块的命名空间覆盖了。那样做可能导致不可预见性灾难。

比如Django Froms 和 Django Models 包中都含有一个类叫CharField,隐含地加载两个库,Models库将覆盖Forms版本的CharField。

#####Django风格
在URL pattern名字中使用下划线"_“而不是破折号”-",注意只是指的是url()的name参数,而不是真正的URL地址,破折号在URL没问题。
使用下划线而不是破折号在模版 block 名字中。

####Python/Django最佳环境配置
本地测试环境和线上生产环境使用同样的数据库
有些童鞋喜欢在本地用SQLite作为测试数据库,生产环境才使用正式的数据库如MySQL/PostgreSQL,然而不同的数据库有不同的数据类型和约束,很多问题一旦跑到线上问题就来了。

#####使用Pip 和 Virtualenv
Pip 是 python 包安装管理工具,比easy_install更强大。
Virtualenv是用来创建完全独立的、隔离的Python环境的工具,这就意味着你可以在A 项目中使用Django1.4,B项目中使用1.5成为可能,互不影响。Virtualenvwrapper如其名就像咖啡伴侣,它为virtualenv提供了更便捷的操作。

使用virtualenv激活某个虚拟环境:

source ~/.virtualenvs/myproject/bin/activate

而使用virtualenvwrapper可以简单为:

workon myproject

####使用版本控制系统
Git 和 Mercurial 是 Django开发中最流行的版本控制工具,它不仅能使用你在本地有一份拷贝,而且还能使用代码托管服务用来备份,更重要的是可以多人协助编程。推荐大家使用 GitHub 或者 Bitbucket,后者可以建立免费的私有仓库。

####Django项目代码布局
运行:

$ django-admin.py startproject mysite
$ cd mysite
$ django-admin.py startapp my_app

Django1.5的默认布局:

mysite/manage.pymy_app/__init__.pymodels.pytests.pyviews.pymysite/__init__.pysettings.pyurls.pywsgi.py    

比较常用的一种布局格式是:

gongshare_project/   #<repository_root>/.gitignoreMakefiledocs/requirements.txtgongshare/          #<django_project_root>/manage.pymedia/products/profiles/ratings/static/templates/gongshare/      #<configuration_root>/__init__.pysettings/urls.pywsgi.py

这是一个三层结构的布局:
顶层是仓库根目录,它包含了第二层目录外还包括一些如:README, doc/ 目录,.gitignorerequirements 文件。

第二层是django项目的根目录,这层是通过 django-admin.py startproject 命令生成的。这个目录包含了第三层目录外还有mdedia、static(css,js等)、templates(模版)目录和app目录(比如:profiles、ratings、products)

第三层同样是通过django-admin.py startproject 生成,除了一个基础的URLConf(urls.py)外还有settings模块,settings模块方式不同环境下的项目配置文件。

####配置文件和必要文件

  • 所有配置文件都应该有版本控制。
  • 遵循DRP原则

这篇关于Python/Django编程实践指南的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140189

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

Spring Boot结成MyBatis-Plus最全配置指南

《SpringBoot结成MyBatis-Plus最全配置指南》本文主要介绍了SpringBoot结成MyBatis-Plus最全配置指南,包括依赖引入、配置数据源、Mapper扫描、基本CRUD操... 目录前言详细操作一.创建项目并引入相关依赖二.配置数据源信息三.编写相关代码查zsRArly询数据库数

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1