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

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法