中文版django官方教程part1

中文版django官方教程part1
中文版django官方教程part1

Writing your first Django app, part 1

编写你的第一个Django程序,第一部分

Let’s learn by example.

从示例程序开始吧。

Throughout this tutorial, we’ll walk you through the creation of a basic poll application.

通过这本新手入门,我们会从头至尾向你介绍怎样创建一个基本的投票程序。

It’ll consist of two parts:

? A public site that lets people view polls and vote in them.

? An admin site that lets you add, change and delete polls.

这个程序包含了两个部分:

一个能够让用户查看投票选项并进行投票的前台。

一个能够进行投票管理的后台。

We’ll assume you have Django installed already. You can tell Django is installed by running the Python interactive interpreter and typing import django. If that command runs successfully, with no errors, Django is installed.

我们假设你已经安装了Django。你可以通过运行Python命令行交互界面并输入import django来确认是否已经安装了Django。如果刚才的命令成功运行了,表示Django已经安装完成。

Where to get help:

If you’re having trouble going through this tutorial, please post a message to django-users or drop by #django on https://www.360docs.net/doc/386099498.html, to chat with other Django users who might be able to help.

从哪里获取帮助:

如果你在阅读这篇新手入门的时候遇到任何困难,请在Django的Google小组留言或是访问Django的IRC,从其他的用户那里获得帮助。

Creating a project

创建项目

If this is your first time using Django, you’ll have to take care of some initial setup. Namely, you’ll need to auto-generate some code that establishes a Django project – a collection of settings for an instance of Django, including database configuration, Django-specific options and application-specific settings.

如果这是你第一次使用Django,你需要注意一下初始化设置。也就是说,你需要自动创建一些Django项目初始化的代码——包括数据库设置、Django特性设置以及程序特性设置。From the command line, cd into a directory where you’d like to store your code, then run the command django-admin.py startproject mysite. This will create a mysite directory in

your current directory.

在命令行界面下,进入到你放置代码的目录中,执行命令django-admin.py startproject mysite。这将在当前目录下创建一个mysite目录。

Mac OS X permissions

If you’re using Mac OS X, you may see the message ―permission denied‖ when you try to run django-admin.py startproject. This is because, on Unix-based systems like OS X, a file must be marked as ―executable‖ before it can be run as a program. To do this, open Terminal.app and navigate (using the cd command) to the directory where

django-admin.py is installed, then run the command chmod +x django-admin.py.

Mac OS X权限设置

如果你是用的是Mac OS X操作系统,你在执行上述命令的时候可能会看到―permission denied‖的提示信息。这是因为在基于Unix的操作系统中,必须要为文件设置可执行权限才能让文件像程序一样执行。打开终端,切换目录到django-admin.py所在的目录,执行命令chmod +x django-admin.py。

Note

You’ll need to avoid naming projects after built-in Python or Django components. In particular, this means you should avoid using names like django (which will conflict with Django itself) or test (which conflicts with a built-in Python package).

注意

你要避免用Python内置模块或是Django组件来命名项目。这就是说你应该避免使用django (与Django名称冲突)或是test(与Python内置模块冲突)这样的名称。

django-admin.py should be on your system path if you installed Django via python setup.py. If it’s not on your path, you can find it in site-packages/django/bin, where

`site-packages` is a directory within your Python installation. Consider symlinking to django-admin.py from some place on your path, such as /usr/local/bin.

如果你是通过python setup.py来安装Django,django-admin.py就应该在你的系统路径下。如果不在的话,你可以在site-packages/django/bin下找到,这里site-packages位于Python 的安装路径下。最好在/usr/local/bin下为django-admin.py建立软链接。

Where should this code live?

If your background is in PHP, you’re probably used to putting code under the Web server’s document root (in a place such as /var/www). With Django, you don’t do that. It’s not a good idea to put any of this Python code within your Web server’s document root, because it risks the possibility that people may be able to view your code over the Web. That’s not good for security.

Put your code in some directory outside of the document root, such as /home/mycode.

代码应该放在哪?

如果你有PHP的背景,你很可能习惯把代码放在Web服务器的文档根目录下面(比如

/var/www)。使用Django,你不用这么做。把Python代码放在Web服务器的文档根目录下面并不是一个好办法,因为这会增加用户通过Web服务器浏览你的代码的风险。这样对系统安全性不好。把你的代码放在文档根目录之外,比如/home/mycode。

Let’s look at what startproject created:

我们来看看startproject都创建了些什么:

mysite/

__init__.py

manage.py

settings.py

urls.py

These files are:

? __init__.py: An empty file that tells Python that this directory should be considered a Python package. (Read more about packages in the official Python docs if you're a Python beginner.)

? manage.py: A command-line utility that lets you interact with this Django project in various ways. You can read all the details about manage.py in django-admin.py and manage.py.

? settings.py: Settings/configuration for this Django project. Django settings will tell you all about how settings work.

? urls.py: The URL declarations for this Django project; a "table of contents" of your Django-powered site. You can read more about URLs in URL dispatcher.

这些文件是:

__init__.py 一个空文件,它表示当前文件夹要被当做一个Python包来对待。(如果你是Python初学者,关于包的概念请看官方文档)

manage.py 命令行交互工具。你可以在django-admin.py and manage.py找到与manage.py有关的所有细节资料。

settings.py Django项目的配置文件。Django设置会告诉你这个文件是怎样工作的。

urls.py Django项目的URL声明文件。你可以在URL分发器中找到更多的相关内容。

The development server

开发服务器

Let's verify this worked. Change into the mysite directory, if you haven't already, and run the command python manage.py runserver. You'll see the following output on th e command line:

我们来看看这能不能正常运行。进入mysite目录,执行命令python manage.py runserver。

你能看到如下的输出:

Validating models...

0 errors found.

Django version 1.0, using settings 'mysite.settings'

Development server is running at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

You've started the Django development server, a lightweight Web server written purely in Python. We've included this with Django so you can develop things rapidly, without having to deal with configuring a production server -- such as Apache -- until you're ready for production.

你已经启动了Django开发服务器,一个以Python编写的轻量级Web服务器。我们在Django 中包含了这个小玩意是为了让你在发布程序之前,能够不需要配置生产环境的服务器而进行快速开发。

Now's a good time to note: DON'T use this server in anything resembling a production environment. It's intended only for use while developing. (We're in the business of making Web frameworks, not Web servers.)

现在请好好注意:千万别在生产环境上用这个自带的服务器。它只是为开发而使用的。(我们的业务是做Web框架,不是Web服务器。)

Now that the server's running, visit http://127.0.0.1:8000/ with your Web browser. You'll see a "Welcome to Django" page, in pleasant, light-blue pastel. It worked!

现在服务器正在运行中,访问http://127.0.0.1:8000/。你会看到一个有意思的类似蜡笔画的浅蓝色―Welcome to Django‖页面。嗯,它正常运行了!

Changing the port

By default, the runserver command starts the development server on port 8000. If you want to change the server's port, pass it as a command-line argument. For instance, this command starts the server on port 8080:

python manage.py runserver 8080

Full docs for the development server can be found in the runserver reference.

改变端口

默认情况下,runserver让开发服务器通过8000端口进行通信。如果你想改变服务器的端口,把端口号作为命令行参数传入即可。下面的例子就是将服务器端口设置为8080:

python manage.py runserver 8080

有关开发服务器的全部文档,可以在runserver参考中找到。

Database setup

数据库设置

Now, edit settings.py. It's a normal Python module with module-level variables representing Django settings. Change these settings to match your database's connection parameters:

? DATABASE_ENGINE -- Either 'postgresql_psycopg2', 'mysql' or 'sqlite3'. Other backends are also available.

? DATABASE_NAME -- The name of your database. If you're using SQLite, the database will be a file on your computer; in that case, DATABASE_NAME should be the full absolute path, including filename, of that file. If the file doesn't exist, it will automatically be created when you synchronize the database for the first time (see below).

When specifying the path, always use forward slashes, even on Windows (e.g.

C:/homes/user/mysite/sqlite3.db).

? DATABASE_USER -- Your database username (not used for SQLite).

? DATABASE_PASSWORD -- Your database password (not used for SQLite).

? DATABASE_HOST -- The host your database is on. Leave this as an empty string if your database server is on the same physical machine (not used for SQLite).

现在编辑settings.py。这是一个Python的模块文件,有很多代表Django设置的模块变量。你可以改变如下的设置来匹配你的数据库连接参数:

DATABASE_ENGINE postgresql_psycopg2、mysql、sqlite3以及其他的数据库类型都可以。

DATABASE_NAME 数据库的名称。如果你使用SQLite,数据库就是一个文件;这种情况下,DATABASE_NAME应当是这个文件的绝对路径。如果文件不存在,在第一次同步数据库的时候会创建这个文件(下面有详细介绍)。

在填写路径的时候,永远都要使用斜杠符号(/),就算是在Windows上也是如此(比如C:/homes/user/mysite/sqlite3.db)。

DATABASE_USER 访问数据库的用户名(SQLite下不使用)。

DATABASE_PASSWORD 访问数据库的密码(SQLite下不使用)。

DATABASE_HOST 数据库所在主机。如果你的数据库在同一台物理机器上这里就可以留空(SQLite下不使用)。

If you're new to databases, we recommend simply using SQLite (by setting

DATABASE_ENGINE to 'sqlite3'). SQLite is included as part of Python 2.5 and later, so you won't need to install anything else.

如果你是个数据库新手,我们建议你使用SQLite(设置DATABASE_ENGINE为sqlite3)。SQLite包含在Python2.5及其后续版本中,所以你不用再安装其他的任何东西。

Note

If you're using PostgreSQL or MySQL, make sure you've created a database by this point. Do that with "CREATE DATABASE database_name;" within your database's interactive

prompt.

If you're using SQLite, you don't need to create anything beforehand - the database file will be created automatically when it is needed.

注意

如果你使用PostgreSQL或MySQL,请确认你已经创建了一个数据库。在你的数据库命令行下使用命令CREATE DATABASE database_name即可。

如果你使用SQLite,就什么都不用创建了——数据库文件在需要的时候会自动创建。While you're editing settings.py, take note of the INSTALLED_APPS setting towards the bottom of the file. That variable holds the names of all Django applications that are activated in this Django instance. Apps can be used in multiple projects, and you can package and distribute them for use by others in their projects.

在编辑settings.py时,注意一下文件底部的INSTALLED_APPS设置。这个变量保存了在当前Django项目中可用的Django程序的名称。Django程序可以在多个项目中复用,而且你可以把这些程序打包部署以供其他的程序调用。

By default, INSTALLED_APPS contains the following apps, all of which come with Django: ? django.contrib.auth -- An authentication system.

? django.contrib.contenttypes -- A framework for content types.

? django.contrib.sessions -- A session framework.

? django.contrib.sites -- A framework for managing multiple sites with one Django installation.

默认情况下,INSTALLED_APPS包含了以下的App,都是Django自带的:

django.contrib.auth 认证系统

django.contrib.contenttypes content types框架

django.contrib.sessions session框架

django.contrib.sites 使用一个Django项目来管理多个站点的框架

These applications are included by default as a convenience for the common case.

为了方便公用,这些程序都默认包含在配置文件中。

Each of these applications makes use of at least one database table, though, so we need to create the tables in the database before we can use them. To do that, run the following command:

每个程序都至少用到了一个数据表,所以,我们要在数据库中创建对应的数据表。执行下面的命令:

python manage.py syncdb

The syncdb command looks at the INSTALLED_APPS setting and creates any necessary database tables according to the database settings in your settings.py file. You'll see a message for each database table it creates, and you'll get a prompt asking you if you'd like

to create a superuser account for the authentication system. Go ahead and do that. syncdb命令会查找INSTALLED_APPS设置并根据settings.py文件的数据库设置创建所有必须的数据表。每创建一个数据表的时候你都能看到对应的提示信息,并且系统还会提示你是否为认证系统创建一个超级用户。请按照提示创建超级用户。

If you're interested, run the command-line client for your database and type \dt (PostgreSQL), SHOW TABLES; (MySQL), or .schema (SQLite) to display the tables Django created.

如果你感兴趣,可以进入到数据库命令行内,输入\dt(PostgreSQL)、SHOW TABLES;(MySQL)或者.schema(SQLite)来显示Django创建的数据表。

For the minimalists

Like we said above, the default applications are included for the common case, but not everybody needs them. If you don't need any or all of them, feel free to comment-out or delete the appropriate line(s) from INSTALLED_APPS before running syncdb. The syncdb command will only create tables for apps in INSTALLED_APPS.

为最低要求者所准备

上面说道,默认的程序是为了方便共用包含进来的,但是不是所有人都需要它们。如果你一个都不需要,就在执行syncdb前将INSTALLED_APPS内的这些程序注释掉或者直接删除。syncdb只会为INSTALLED_APPS内的程序创建数据表。

Creating models

创建模型

Now that your environment -- a "project" -- is set up, you're set to start doing work.

现在你的项目环境就已经建立好,可以开始正式的工作了。

Each application you write in Django consists of a Python package, somewhere on your Python path, that follows a certain convention. Django comes with a utility that automatically generates the basic directory structure of an app, so you can focus on writing code rather than creating directories.

你用Django写成的每个程序都是由Python包组成的,这些包位于Python Path中并遵循一定的命名规范。Django有个工具能够自动生成程序的基本目录结构,所以你可以专注与写代码而不用去创建目录。

Projects vs. apps

What's the difference between a project and an app? An app is a Web application that does something -- e.g., a weblog system, a database of public records or a simple poll app. A project is a collection of configuration and apps for a particular Web site. A project can contain multiple apps. An app can be in multiple projects.

项目VS程序

项目(project)和程序(app)之间有什么不同?程序是可以是一个博客系统、公共记录的数据库或非常简单的投票程序。项目是一个网站的配置和程序的集合。项目可以包含多个程序;程序也可以运用到多个项目中去。

In this tutorial, we'll create our poll app in the mysite directory, for simplicity. As a consequence, the app will be coupled to the project -- that is, Python code within the poll app will refer to mysite.polls. Later in this tutorial, we'll discuss decoupling your apps for distribution.

在这本新手入门中,为了简便,我们会在mysite目录下创建投票程序。这个程序就会耦合到这个项目中——也就是说,投票程序内的所有Python代码可以用mysite.polls来进行引用。在后面的部分中,我们会讨论怎样在部署的时候将程序进行解耦。

To create your app, make sure you're in the mysite directory and type this command:

要创建程序,请确定你现在位于mysite目录下并输入以下命令:

python manage.py startapp polls

That'll create a directory polls, which is laid out like this:

这样做会创建一个polls目录,结构如下所示:

polls/

__init__.py

models.py

views.py

This directory structure will house the poll application.

这个目录就是投票程序的正式结构。

The first step in writing a database Web app in Django is to define your models -- essentially, your database layout, with additional metadata.

在Django中开发一个有数据库的Web程序的第一步就是定义模型——就是数据库设计以及附加元数据。

Philosophy

A model is the single, definitive source of data about your data. It contains the essential fields and behaviors of the data you're storing. Django follows the DRY Principle. The goal is to define your data model in one place and automatically derive things from it.

哲理

模型是你的数据的单一的、限定的源。它包含你要保存的数据的基本字段和行为。Django 遵循DRY原则。目标是为了只在一处地方定义你的数据模型并能够自动从其中获取数据。In our simple poll app, we'll create two models: polls and choices. A poll has a question and a publication date. A choice has two fields: the text of the choice and a vote tally. Each choice is associated with a poll.

在我们的投票程序中,要创建两个模型:polls(投票)和choices(选项)。投票有问题和

发布日期两个字段。选项有两个字段:每个选项的文本内容和投票统计。每个选项都和投票进行关联。

These concepts are represented by simple Python classes. Edit the polls/models.py file so it looks like this:

这些概念都由Python类所表现出来。编辑polls/models.py文件,加入下面的代码:

from django.db import models

class Poll(models.Model):

question = models.CharField(max_length=200)

pub_date = models.DateTimeField('date published')

class Choice(models.Model):

poll = models.ForeignKey(Poll)

choice = models.CharField(max_length=200)

votes = models.IntegerField()

Errors about max_length

If Django gives you an error message saying that max_length is not a valid argument, you're most likely using an old version of Django. (This version of the tutorial is written for the latest development version of Django.) If you're using a Subversion checkout of Django's development version (see the installation docs for more information), you shouldn't have any problems.

If you want to stick with an older version of Django, you'll want to switch to the Django 0.96 tutorial, because this tutorial covers several features that only exist in the Django development version.

关于max_length的错误

如果Django发出错误信息告诉你max_length不是一个有效的参数,那你可能就是在用Django的旧版本。(当前的新手入门是建立在最新的Django版本上的)如果你是从SVN 中获取的Django开发版本(详细信息看这里),你就不会有这些问题。

如果你坚持要用Django的旧版本,那你就该参考Django 0.96的新手入门,这篇文章中会包含一些只在Django最新开发版本中包含的特性。

The code is straightforward. Each model is represented by a class that subclasses django.db.models.Model. Each model has a number of class variables, each of which represents a database field in the model.

上面的代码很直接。每个模型都由一个继承自django.db.models.Model的类来描述,都有一定数量的类变量,每个类变量都对应一个数据库字段。

Each field is represented by an instance of a Field class -- e.g., CharField for character fields and DateTimeField for datetimes. This tells Django what type of data each field holds.

每个字段都由一个Field类的实例来进行描述——比如CharField表示字符类型的字段而DateTimeField表示日期时间型的。这会告诉Django数据库字段保存了什么类型的数据。The name of each Field instance (e.g. question or pub_date ) is the field's name, in machine-friendly format. You'll use this value in your Python code, and your database will use it as the column name.

每个Field实例的名字(例如question或pub_date)就是字段的名字,字段的格式是亲和机器式的。在你的Python代码中会用到这个值,而数据库会将这个值认作表的列名。

You can use an optional first positional argument to a Field to designate a

human-readable name. That's used in a couple of introspective parts of Django, and it doubles as documentation. If this field isn't provided, Django will use the

machine-readable name. In this example, we've only defined a human-readable name for Poll.pub_date. For all other fields in this model, the field's machine-readable name will suffice as its human-readable name.

你可以在初始化Field实例时使用第一位置可选参数来指定一个符合人类习惯的名称。这在Django的一些内省部分中被使用到了,而且这个还能作为文档来增强代码的可读性。如果没有提供这个参数,Django会使用符合机器习惯的名称。例如,我们只为Poll.pub_date

定义了一个人类名称。对于模型中的其他字段,机器名称就已经足够让人们理解它表示什么含义了。

Some Field classes have required elements. CharField, for example, requires that you give it a max_length. That's used not only in the database schema, but in validation, as we'll soon see.

有些Field类有必要元素。比如CharField,要求你指定max_length。这并不只是用于数据库里,我们以后就会看到它也用在数据验证中。

Finally, note a relationship is defined, using ForeignKey. That tells Django each Choice is related to a single Poll. Django supports all the common database relationships:

many-to-ones, many-to-manys and one-to-ones.

最后,注意我们使用ForeignKey定义了一个关系。这会告诉Django每个Choice会同一个Poll进行关联。Django支持所有的通用数据库关系类型:多对一、多对多、一对一。

Activating models

启用模型

That small bit of model code gives Django a lot of information. With it, Django is able to: ? Create a database schema (CREATE TABLE statements) for this app.

? Create a Python database-access API for accessing Poll and Choice objects.

But first we need to tell our project that the polls app is installed.

刚才的一小段有关模型的代码,能够让Django做很多事情。有了这些代码,Django能够:

为程序创建对应的数据表。

给Poll和Choice对象创建数据库访问API。

Philosophy

Django apps are "pluggable": You can use an app in multiple projects, and you can distribute apps, because they don't have to be tied to a given Django installation.

哲理

Django程序是―插入式的‖:你可以在多个项目中使用一个程序,你还可以将程序打包分发,因为这些程序不需要被绑定到Django的安装环境中。

Edit the settings.py file again, and change the INSTALLED_APPS setting to include the string 'mysite.polls'. So it'll look like this:

再次编辑settings.py文件,为INSTALLED_APPS加入―mysite.polls‖。就像下面所显示的一样:

INSTALLED_APPS = (

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.sites',

'mysite.polls'

)

Now Django knows mysite includes the polls app. Let's run another command:

现在Django就知道mysite项目中包含了polls程序了。现在我们执行另一条命令:python manage.py sql polls

You should see something similar to the following (the CREATE TABLE SQL statements for the polls app):

你应该能够看到类似于下面的输出(polls程序的创建数据表SQL):

BEGIN;

CREATE TABLE "polls_poll" (

"id" serial NOT NULL PRIMARY KEY,

"question" varchar(200) NOT NULL,

"pub_date" timestamp with time zone NOT NULL

);

CREATE TABLE "polls_choice" (

"id" serial NOT NULL PRIMARY KEY,

"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),

"choice" varchar(200) NOT NULL,

"votes" integer NOT NULL

);

COMMIT;

Note the following:

? The exact output will vary depending on the database you are using.

? Table names are automatically generated by combining the name of the app (polls) and the lowercase name of the model -- poll and choice. (You can override this behavior.) ? Primary keys (IDs) are added automatically. (You can override this, too.)

? By convention, Django appends "_id" to the foreign key field name. Y es, you can override this, as well.

? The foreign key relationship is made explicit by a REFERENCES statement.

? It's tailored to the database you're using, so database-specific field types such as

auto_increment (MySQL), serial (PostgreSQL), or integer primary key (SQLite) are handled for you automatically. Same goes for quoting of field names -- e.g., using double quotes or single quotes. The author of this tutorial runs PostgreSQL, so the example output is in PostgreSQL syntax.

? The sql command doesn't actually run the SQL in your database - it just prints it to the screen so that you can see what SQL Django thinks is required. If you wanted to, you could copy and paste this SQL into your database prompt. However, as we will see shortly, Django provides an easier way of committing the SQL to the database.

注意以下几点:

真实的输出会根据你所使用的数据库有所不同。

数据表的名字由程序的名字(polls)和模型的小写名字(poll和choice)组成(你可以重写这个行为)。

主键(ID)是自动添加的(这个你也可以重写)。

根据命名规范,Django会给外键字段加上―_id‖,你还是可以重写这个行为。

外键关系由REFERENCES语句显式声明。

生成的语句对你所用的数据库都是自适应的,所以类似于auto_increment(MySQL)、serial(PostgreSQL)或integer primary key(SQLite)的数据库字段都会自动进行处理。在引用字段名称的时候也是自适应的——会使用双引号或单引号。本文的作者使用的是PostgreSQL数据库,所以例子中输出的是PostgreSQL语法。

输出的SQL语句并不会在数据库内执行——它只是打印出来让你了解Django认为什么样的SQL是必须的。如果你要执行,之需要复制粘贴到数据库命令行下就可以了。但是,我们等会就能看到,Django有更简单的方法来执行SQL。

If you're interested, also run the following commands:

? python manage.py validate -- Checks for any errors in the construction of your models. ? python manage.py sqlcustom polls -- Outputs any custom SQL statements (such as

table modifications or constraints) that are defined for the application.

? python manage.py sqlclear polls -- Outputs the necessary DROP TABLE statements for this app, according to which tables already exist in your database (if any).

? python manage.py sqlindexes polls -- Outputs the CREATE INDEX statements for this app.

? python manage.py sqlall polls -- A combination of all the SQL from the sql, sqlcustom, and sqlindexes commands.

如果你有兴趣,也可以执行以下命令:

python manage.py validate 检测在生成模型的时候是否有错误。

python manage.py sqlcustom polls 输出程序中定义的custom SQL语句(比如表或约束的修改)。

python manage.py sqlclear polls 根据有哪些表存在于数据库中,输出必要的DROP TABLE语句。

python manage.py sqlindexes polls 输出CREATE INDEX语句。

python manage.py sqlall polls 组合输出sql、sqlcustom和sqlindexes的结果。Looking at the output of those commands can help you understand what's actually happening under the hood.

这些命令的输出结果能够帮助你理解在程序底层到底做了什么处理。

Now, run syncdb again to create those model tables in your database:

现在,再次执行syncdb命令来创建模型对应的数据表:

python manage.py syncdb

The syncdb command runs the sql from 'sqlall' on your database for all apps in INSTALLED_APPS that don't already exist in your database. This creates all the tables, initial data and indexes for any apps you have added to your project since the last time you ran syncdb. syncdb can be called as often as you like, and it will only ever create the tables that don't exist.

syncdb命令会给INSTALLED_APPS中在数据库里没有对应数据表的程序执行sqlall操作。这个操作根据你上一次执行syncdb的结果,为项目中所有的程序创建对应的表、初始化数据并创建索引。syncdb你想调用多少次就能调用多少次,而它只会创建数据库里还不存在的表。

Read the django-admin.py documentation for full information on what the manage.py utility can do.

想了解manage.py工具更多的功能,请阅读django-admin.py的文档。

Playing with the API

使用模型API

Now, let's hop into the interactive Python shell and play around with the free API Django gives you. T o invoke the Python shell, use this command:

现在,进入到Python的命令行环境中,开始使用Django提供的API吧。要进入命令行,输入下面的命令:

python manage.py shell

We're using this instead of simply typing "python", because manage.py sets up the project's environment for you. "Setting up the environment" involves two things:

? Putting mysite on sys.path. For flexibility, several pieces of Django refer to projects in Python dotted-path notation (e.g. 'mysite.polls.models'). In order for this to work, the mysite package has to be on sys.path.

We've already seen one example of this: the INSTALLED_APPS setting is a list of packages in dotted-path notation.

? Setting the DJANGO_SETTINGS_MODULE environment variable, which gives Django the path to your settings.py file.

我们没有直接使用python命令进入命令行,因为manage.py会为你配置项目环境。配置环境包括以下两点:

?在sys.path中加入mysite。便捷起见,项目中所引用的模块都是以Python的―点路径‖的方式来表示(比如―mysite.polls.models‖)。为了正常工作,mysite包就必须在sys.path内。我们已经看到了一个例子:INSTALLED_APPS就是一组用―点路径‖方式表示的包的集合。?设置DJANGO_SETTINGS_MODULE环境变量,这个变量会将settings.py的路径告诉Django。

Bypassing manage.py

If you'd rather not use manage.py, no problem. Just make sure mysite is at the root level on the Python path (i.e., import mysite works) and set the

DJANGO_SETTINGS_MODULE environment variable to mysite.settings.

For more information on all of this, see the django-admin.py documentation.

忽略manage.py

如果你不想用manage.py,没问题,只要确定mysite在Python路径的根级别下然后给mysite.settings设置DJANGO_SETTINGS_MODULE环境变量。

要了解更多的内容,请参考django-admin.py文档。

Once you're in the shell, explore the database API:

进入命令行后,请浏览Django数据库API:

>>> from mysite.polls.models import Poll, Choice # Import the model classes we just wrote.

# No polls are in the system yet.

>>> Poll.objects.all()

[]

# Create a new Poll.

>>> import datetime

>>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())

# Save the object into the database. You have to call save() explicitly.

>>> p.save()

# Now it has an ID. Note that this might say "1L" instead of "1", depending

# on which database you're using. That's no biggie; it just means your

# database backend prefers to return integers as Python long integer

# objects.

>>> p.id

1

# Access database columns via Python attributes.

>>> p.question

"What's up?"

>>> p.pub_date

datetime.datetime(2007, 7, 15, 12, 00, 53)

# Change values by changing the attributes, then calling save().

>>> p.pub_date = datetime.datetime(2007, 4, 1, 0, 0)

>>> p.save()

# objects.all() displays all the polls in the database.

>>> Poll.objects.all()

[]

Wait a minute. is, utterly, an unhelpful representation of this object. Let's fix that by editing the polls model (in the polls/models.py file) and adding a

__unicode__() method to both Poll and Choice:

慢着,这样的形式绝对不是一个直白的表达方式。我们可以修改模型的代码(在polls/models.py文件里),给Poll和Choice各加入一个__unicode__()方法来解决这个问题:

class Poll(models.Model):

# ...

def __unicode__(self):

return self.question

class Choice(models.Model):

# ...

def __unicode__(self):

return self.choice

If __unicode__() doesn't seem to work

If you add the __unicode__() method to your models and don't see any change in how they're represented, you're most likely using an old version of Django. (This version of the tutorial is written for the latest development version of Django.) If you're using a Subversion checkout of Django's development version (see the installation docs for more information), you shouldn't have any problems.

If you want to stick with an older version of Django, you'll want to switch to the Django 0.96 tutorial, because this tutorial covers several features that only exist in the Django development version.

如果__unicode__()看起来好像没用

如果在模型中加入了__unicode__()方法,但是在命令行里对象的表现方式又没有任何改变,那你可能就是在用旧版本的Django。(当前的新手入门是建立在最新的Django版本上的)如果你是从SVN中获取的Django开发版本(详细信息看这里),你就不会有这些问题。

如果你坚持要用Django的旧版本,那你就该参考Django 0.96的新手入门,这篇文章中会包含一些只在Django最新开发版本中包含的特性。

It's important to add __unicode__() methods to your models, not only for your own sanity when dealing with the interactive prompt, but also because objects' representations are used throughout Django's automatically-generated admin.

给模型加上__unicode__()方法是很重要的,不光是为了在命令行里能够让你保持思路清晰,而且在Django自动生成的管理界面里对象表现也是会被用到的。

Why __unicode__() and not django.db.models.Model.__str__()?

If you're familiar with Python, you might be in the habit of adding

django.db.models.Model.__str__() methods to your classes, not __unicode__() methods. We use __unicode__() here because Django models deal with Unicode by default. All data stored in your database is converted to Unicode when it's returned.

Django models have a default django.db.models.Model.__str__() method that calls

__unicode__() and converts the result to a UTF-8 bytestring. This means that unicode(p) will return a Unicode string, and str(p) will return a normal string, with characters encoded as UTF-8.

If all of this is jibberish to you, just remember to add __unicode__() methods to your models. With any luck, things should Just Work for you.

为什么是__unicode__()而不是django.db.model.Model.__str__()?

如果你熟悉Python,你可能会有在模型类里使用django.db.model.Model.__str__()方法的习惯而不会去使用__unicode__()。我们用__unicode__()方式是因为Django模型默认处理Unicode数据。当数据库里的数据返回时,它们全都会被转成Unicode编码。

Django模型有个默认的django.db.model.Model.__str__()方法来调用__unicode__()方法并将结果转换成UTF8格式。这意味着unicode(p)会返回Unicode字符串,而str(p)会返回一个UTF8编码的普通字符串

如果这些东西让你很困扰,那就只需要记住给模型类加入__unicode__()方法。幸运的话,这些代码会正常工作。

Note these are normal Python methods. Let's add a custom method, just for demonstration:

上面提到的都是Python的魔术方法。现在我们加上一个自定义方法做演示:

import datetime

# ...

class Poll(models.Model):

# ...

def was_published_today(self):

return self.pub_date.date() == datetime.date.today()

Note the addition of import datetime to reference Python's standard datetime module.

请注意增加了import datetime部分是为了引用Python的标准日期时间模块。

Let's jump back into the Python interactive shell by running python manage.py shell again: 我们再次运行python manage.py shell回到命令行下:

>>> from mysite.polls.models import Poll, Choice

# Make sure our __unicode__() addition worked.

>>> Poll.objects.all()

[]

# Django provides a rich database lookup API that's entirely driven by

# keyword arguments.

>>> Poll.objects.filter(id=1)

[]

>>> Poll.objects.filter(question__startswith='What')

[]

# Get the poll whose year is 2007. Of course, if you're going through this

# tutorial in another year, change as appropriate.

>>> Poll.objects.get(pub_date__year=2007)

>>> Poll.objects.get(id=2)

Traceback (most recent call last):

...

DoesNotExist: Poll matching query does not exist.

# Lookup by a primary key is the most common case, so Django provides a # shortcut for primary-key exact lookups.

# The following is identical to Poll.objects.get(id=1).

>>> Poll.objects.get(pk=1)

# Make sure our custom method worked.

>>> p = Poll.objects.get(pk=1)

>>> p.was_published_today()

False

# Give the Poll a couple of Choices. The create call constructs a new

# choice object, does the INSERT statement, adds the choice to the set

# of available choices and returns the new Choice object.

>>> p = Poll.objects.get(pk=1)

>>> p.choice_set.create(choice='Not much', votes=0)

>>> p.choice_set.create(choice='The sky', votes=0)

>>> c = p.choice_set.create(choice='Just hacking again', votes=0)

# Choice objects have API access to their related Poll objects.

>>> c.poll

# And vice versa: Poll objects get access to Choice objects.

>>> p.choice_set.all()

[, , ] >>> p.choice_set.count()

3

# The API automatically follows relationships as far as you need.

# Use double underscores to separate relationships.

# This works as many levels deep as you want; there's no limit.

# Find all Choices for any poll whose pub_date is in 2007.

>>> Choice.objects.filter(poll__pub_date__year=2007)

[, , ] # Let's delete one of the choices. Use delete() for that.

>>> c = p.choice_set.filter(choice__startswith='Just hacking')

>>> c.delete()

For full details on the database API, see our Database API reference.

要了解更多的数据库API只是,请查阅Database API reference。

When you're comfortable with the API, read part 2 of this tutorial to get Django's automatic admin working.

当你对API有所了解之后,可以开始第二部分来学习Django自动生成后台是怎样工作的。

Python & DJango入门教程[原创]

网民原创 Python DJango手册环境搭建项目创建项目配置应用创建数据访问数据编辑 网民 2011/9/22

目录 1.环境 (3) 1.1.安装Python (3) 1.1.1.说明 (3) 1.1.2.安装 (3) 1.1.3.验证 (3) 1.1.4.卸载 (4) 1.2.安装DJango (5) 1.2.1.说明 (5) 1.2.2.安装 (5) 1.2.3.验证 (5) 1.2.4.卸载 (6) 2.起步 (7) 2.1.项目 (7) 2.1.1.创建项目 (7) 2.1.2.运行项目 (7) 2.2.后台 (8) 2.2.1.说明 (8) 2.2.2.引用库 (8) 2.2.3.Sqlite3数据库 (8) 2.2.4.URL (9) 2.3.模块 (10) 2.3.1.创建模块 (10) 2.3.2.创建数据 (10) 2.3.3.添加数据 (11)

2.3.4.创建页面 (12) 2.3.5.创建映射 (12) 2.3.6.配置映射 (12) 2.3.6.1.模块MVC (13) 2.3.6.2.项目MVC (13) 2.3.7.访问数据 (14) 2.3.7.1.模块C (14) 2.3.7.2.模块V (14) 2.3.7.3.项目C (15) 2.3.8.编辑数据 (16) 2.3.8.1.模块V (16) 2.3.8.2.模块C (16)

1.环境 1.1.安装Python 1.1.1.说明 python安装文件可从https://www.360docs.net/doc/386099498.html,下载; 例如python-2.7.2.msi; 1.1. 2.安装 1)运行python安装文件,例如“python-2.7.2.msi”; 2)建议安装路径:.\\PythonServer\\PythonXXX;例如,python的版本是 2.7.2,则安装路径为“.\\PythonServer\\Python272”,这样其他python 相关的安装程序都可以放到.\\PythonServer下,且能看清python版本; 3)增加系统环境变量,在path内增加python根目录路径,例如 “D:\\PythonServer\\Python272”; 1.1.3.验证 1)进入WINDOWS命令行界面; 2)输入“python”,则进入python的命令行,可以看到python的版本信息 和命令符; 3)输入python代码,例如“print ‘pyton is ok’”,会看到python打印出 一行“python is ok”,说明python安装成功; 4)退出python命令行,输入“exit()”或按下“Ctrl+Z”皆可;

python入门基础教程必学的11个知识点

python入门基础教程必学的11个知识点 Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因。 1、Python适用于哪些应用场景? 这个没有固定答案,很多人都说Python不适合开发GUI的程序,但Python 自己的IDE——IDEL和第三方的IDE——Eric就是Python写的。 目前看到的更多的人是拿来写Web,使用如Django、web.py框架,没记错Flask也是。 也有一个情况用的比较多,用Python当胶水,与各种语言结合,共同完成某软件功能,注意观察也许你会发现在安装一些软件的时候会有Python的身影。 我个人还拿Python模拟过端口转发和DNS服务等,所以真的是要看真么用,而不是能怎么用。

另外大数据分析Python也是比较适合的,从载入到分析,再到保存结果等,Python有一整套的模块应对。 2、Python能够胜任大数据吗? Python很适合做大数据相关的分析,内置的C编译的模块能应对常见的操作,个别极端的算法建议用C重写相关模块。 Python本身的特点更多的是高效率的开发和简单的维护,速度交给C去吧,更多的问题其实出自写代码的人没有更好的使用,而不是效率不够高。比如排序,本来Python有非常高效的内置C编译的模块,却非要自己写算法,这样的结果不慢都是奇怪的。 另外还要看需求是CPU密集型,还是IO密集型,如果是CPU密集型建议这部分操作由C实现,IO密集型的效率不会因为Python而有多少改变。 C的效率是高,但框架搭起来也费劲,所以还是结合着来吧,也因此,Python 被称为胶水语言。 3、Python是否可以完全代替Shell? 完全可以,Shell的功能Python均可实现,而且代码量更少、结构更优、可阅读性更好,而Python可实现的功能Shell却不一定能,如运维中会用到的用于网络通信的Socket模块、用于WEB的Django框架、用于性能采集的psutil 模块等,而且Shell对操作系统的命令依赖性较强,Python可在更大程度上规避。 在一个Shell的IDE是个很大的问题,虽然Python的原生IDE不怎么样,但第三方的IDE还是功能十分强大的,虽然不能和微软的Virtual Studio相媲美,但也是能完全满足Python的开发需求的。

千锋教育Python入门教程

千锋教育Python入门教程 有人说,看着Python简单易学,想尝试自学,打算找些入门教程自学Python,不知道哪的视频好。现在,你可来对地方了,接下来附上千锋教育Python入门教程的链接。 千锋Python基础教程:https://www.360docs.net/doc/386099498.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.360docs.net/doc/386099498.html,/s/1hrXwY8k Python课程windows知识点:https://www.360docs.net/doc/386099498.html,/s/1kVcaH3x Python课程linux知识点:https://www.360docs.net/doc/386099498.html,/s/1i4VZh5b Python课程web知识点:https://www.360docs.net/doc/386099498.html,/s/1jIMdU2i Python课程机器学习:https://www.360docs.net/doc/386099498.html,/s/1o8qNB8Q Python 看完视频,建议你了解一下Python可以做什么: 1.网站后端程序员:使用它单间网站,后台服务比较容易维护。如:Gmail 、Youtube、知乎、豆瓣;

2.自动化运维:自动化处理大量的运维任务; 3.数据分析师:快速开发快速验证,分析数据得到结果; 4.游戏开发者:一般是作为游戏脚本内嵌在游戏中; 5.自动化测试:编写为简单的实现脚本运用在Selenium/lr,可实现自动化; 6.网站开发:借助django,flask框架自己搭建网站; 7.爬虫获取或处理大量信息:批量下载美剧、运行投资策略、爬合适房源、系统管理员的脚本任务等。 千锋教育Python培训课程共23周10大阶段力造Python全栈工程师,直击月薪15000!内容包括3.Python语言基础2.7.3、Python 3.x 进阶与python第三方库、PyQt开发、Linux指令、Linux Shell、Linux python运维自动化、KaliLinux 安全课程、Linux 网站后台-python开发、Python 数据库MySQL Oracle开发、HTML5基础CSS基础。 当然,没说完,还有Java-Script JQuery基础、Python项目爬虫,服务集群,网站后台,微信公众号开发、Python机器学习与数据挖掘,数据分析

Python快速入门教程,十分钟让你入门Python

Python快速入门教程,十分钟让你入门Python 怎么入门Python? 怎么深化学习?怎么能够在Python学习中更加容易上手?下面咱们就来解析一下Python学习的步骤和法门,给我十分钟,教你快速入门。 根底语法 首先找一份通俗易懂,同时言简意赅的入门教程,迅速了解Python的根底语法。 通俗易懂极好了解,可是为何要言简意赅呢?内容详实翔实不好么?详实翔实本没有错,可是不太合适初学者。学习语法是一个对比单调的进程,假如这个进程太长或许细节太多,很简略造成初学者的畏难心思,致使无法坚持下去。而且关于没有接触过的概念,假如学习以后没有在实践中领会这些概念的用处,也很简略忘掉。所以倒不如一开始只学习非常主要的、必不可少的中心概念,把握言语的整体概略,细节比及日后实践中再逐步学习。 学习构造

刚学习完根底语法,直接学习构造会不会太马上,太突兀了?不会,而且这么做很有必要。 关于刚入门的人,最主要的是培育Ta的学习爱好和决心。学有所用,而且学得会,学习者才干坚持下去。可是关于一个初学者来说,用根底常识、根底工具来写出一个“能用”的东西,实在是太难了!而运用构造,能让你用不多的代码迅速构建出一个可用的功用,这关于爱好的培育至关主要。 有的人可能会忧虑,自个的根底常识都那么薄弱,怎么能学好构造呢?本来这个忧虑却是不用,大多数大型的构造都把功用封装得很完好,界说了一套在自个的构造下干事的“规矩”,学习构造更多的是学习这些“规矩”,入门倒不需要很深的理论根底。 教师教导 构造能够处理爱好的疑问,教师教导能够处理决心和功率的疑问。 人的大脑是软弱的,遇到一个疑问对比难,大脑会试着处理;遇到两个疑问对比难,大脑会先试着逃避,镇定后再测验处理;假如连续遇到三个无法处理的疑问,大脑基本上会挑选抛弃。而教师的效果即是让你的大脑每次只需要面临一个疑问。遇到疑问,自个试着处理,还是搞不定,问教师,教师教你处理。这么你的大脑就不会一连遇到几个疑问,最终挑选抛弃了。 同时,有教师为你保驾护航也会让你的学习进展大幅进步。编程中遇到疑问不会处理再多见不过了,没有人能够在不遇到疑问的情况下学会编程。而教师的效果是确保你遇到疑问一天以内能够得到处理,而不是在一个疑问上卡一周。一般来说,有教师教导的学习比没有教师教导的学习进展要快一倍。

【黑马程序员】Python入门教程、python基础教程

【黑马程序员】Python入门教程、python基础教程 黑马程序员视频库网址:https://www.360docs.net/doc/386099498.html,(海量热门编程视频、资料免费学习)学习路线图、学习大纲、各阶段知识点、资料网盘免费领取+QQ 3285264708 / 3549664195 适合人群:零基础小白 学习周期:15天 课程章节:2章(每章包含1-100小节课程) 学习后目标:1.掌握基本的Linux系统操作。2.掌握Python基础编程语法。3.建立起编程思维和面向对象思想。 0基础小白也能学会的人工智能 完整视频:https://www.360docs.net/doc/386099498.html,/course/534.html?1911sxkqq 课程资料:https://https://www.360docs.net/doc/386099498.html,/s/1EDaAE9eG0fhW7V5haowbig 提取码:9kml 内容简介: 本套课程从零开始,讲解人工智能的全部核心基础,4天课让你掌握机器学习、线性代数、微积分和概率论,学完课程你可以自己推导损失函数,实现梯度下降,手写神经网络,把控无人驾驶,完成手写字识别... 2019年python入门到精通(19天全) 完整视频:https://www.360docs.net/doc/386099498.html,/course/542.html?1910sxkqq

课程资料:https://https://www.360docs.net/doc/386099498.html,/s/1UzxLIXhkRppccqf2vGyOhA 提取码:ueva 内容简介: python基础学习课程,从搭建环境到判断语句,再到基础的数据类型,之后对函数进行学习掌握,熟悉文件操作,初步构建面向对象的编程思想,最后以一个案例带领同学进入python的编程殿堂 Python入门教程完整版(懂中文就能学会) 完整视频:https://www.360docs.net/doc/386099498.html,/course/273.html?1910sxkqq 课程资料:https://https://www.360docs.net/doc/386099498.html,/s/12-dymJ8FjWzh6b5NKJuP3Q 提取码:gqly 内容简介: 1-3 天内容为Linux基础命令;4-13 天内容为Python基础教程;14-15 天内容为飞机大战项目演练。 python进阶深入浅出完整版 完整视频:https://www.360docs.net/doc/386099498.html,/course/541.html?1910sxkqq 课程资料:https://https://www.360docs.net/doc/386099498.html,/s/1Y83bFUKz1Z-gM5x_5b_r7g 提取码:ix8q 内容简介: python高级学习课程,从linux操作系统到网络编程,再到多任务编程以及http同学协议,熟练掌握mysql数据库的使用,构建完整python编程技能,进入python殿堂,一窥python 编程之美。 Python进阶之Django框架

实例教程1小时学会Python

实例教程:1小时学会Python 1 序言 面向读者 本文适合有经验的程序员尽快进入Python2.x世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序. Python3.x用户请参考:https://www.360docs.net/doc/386099498.html,/yunshichen/archive/2009/04/01/55924.html (由于Django不支持python3, 所以为了你的发展潜力, 建议你学习python2.x) 为什么使用Python 假设我们有这么一项任务:简单测试局域网中的电脑是否连通.这些电脑的ip范围从192.168.0.101到192.168.0.200. 思路:用shell编程.(Linux通常是bash而Windows是批处理脚本).例如,在Windows上用ping ip 的命令依次测试各个机器并得到控制台输出.由于ping通的时候控制台文本通常是"Reply from ... " 而不通的时候文本是"time out ... " ,所以,在结果中进行字符串查找,即可知道该机器是否连通. 实现:Java代码如下: String cm d="cm d.exe ping "; String ipprefix="192.168.10."; int begin=101; int end=200; Process p=null; for(int i=begin;i

python入门教程-Python Web框架介绍

python入门教程-Python Web框架介绍 Python在当下是非常火热的,随着人工智能的发展,Python也迎来了很大的发展,今天,有非常多的Python框架,用来帮助你更轻松的创建web应用。接下来我们就来介绍一下Python Web的框架。 Python发源于八十年代后期。开发者是Centrum Wiskunde& Informatica的Guido van Rossum,这是位于荷兰阿姆斯特丹科学园区的一个数学和计算机科学研究中心。之后Van Rossum一直是Python开发很有影响的人物。事实上,社区成员给了他一个荣誉称号:终生仁慈独裁者(BDFL)。 经过初期的不起眼,Python已经成为互联网最流行的服务端编程语言之一。根据W3Techs的统计,它被用于很多的大流量的站点,超过了ColdFusion,PHP,和https://www.360docs.net/doc/386099498.html,。其中超过98%的站点运行的是Python2.0,只有1%多一点的站点运行3.0。 框架让开发更轻松

今天,有着大量的Python框架,它们可以让web应用的开发更轻松。这些框架把不同的模块集成在一起,让你更快的构架程序,而不用关注一些细节(例如socket和协议),框架提供了需要的所有功能。 作为分成两部分的系列文章的第一部分,我们会介绍一些最流行的Python 框架。虽然大部分现代的web框架都运行在服务端,也有一些框架开始尝试与客户端代码结合,可以在客户端运行(例如Skulpt和Trinket)。Python框架通常分为全栈框架和非全栈框架。全栈框架设计从用户体验到数据库的所有技术,非全栈框架则并不包含整个开发的全部技术。 此外还有一种微框架,也属于非全栈框架,但是更轻量级。有的情况下,微框架是比较适合的,有时又适合使用全栈框架。在文章的第二部分我们会对全栈框架和微框架做一个比较。 Django Django恐怕是最有代表性的Python框架了。它是一个遵循MMVC架构模式的开源框架。它的名字来自Django Reinhardt,一个法国作曲家和吉他演奏家,很多人认为他是历史上最伟大的吉他演奏家。位于堪萨斯洲的Lawrence 城的Lawrence Journal-World报社有两位程序员,Adrian Holovaty和Simon Willison,他们在2003的时候开发出了Django,用于给报纸开发web程序。 Django内置了模板引擎,同时也通过OOTB来支持流行的Jinja2引擎。它还支持基于正则的URL分发,可以通过简单的URL来完成复杂的映射。 Django的优势之一是只需要单独的安装包来安装。其他的一些类似的框架需要下载很多组件才能开始工作。而且,Django还有完善的保持更新的文档,对于开源项目来说这通常是短板。它是一个健壮的框架,很好的集成了很多来自

python基础教程:推荐几本Python入门书籍,初学者必看!

python基础教程:推荐几本Python入门书籍,初学者必看! 小编精选了6本高质量的Python书籍。里面涵盖各种各样的书籍,其中包含适 用于初学者,中级和高级程序员的,也有针对特别领域的,例如,着重于编写Python 游戏的,在Python界口碑极好的...... 下面来看看书单。 Python核心编程第三版(中文版) python核心编程第三版中文版PDF,python进阶教程,包含正则,网络编程,数据库编程,GUI,Django,爬虫,云计算假设等内容,实乃居家旅行,疯狂写码, 必备良书! Python是一种不复杂但很健全的编程语言。它不光具备传统编译型程序设计语言强大的功能和复杂性,还在某种程度上具备比较简单的脚本和解释型程序设计语言的 易用性。该书向读者介绍了这种语言的核心内容,并展示了Python语言可以完成哪 些任务。其主要内容包括:语法和编程风格、Python语言的对象、Web程序设计、 执行环境等。该书条理清晰、通俗易懂,是学习Python语言的最好教材及参考手册。, 所附光盘包括Python语言最新的三个版本及书中示例代码。 Python学习手册第4版(中文版) Google和YouTube由于PythonF的高可适应性、易于维护以及适合于快速开 发而采用它。《Python学习手册(第4版)》将帮助你使用Python编写出高质量、高效的并且易于与其他语言和工具集成的代码。《Python学习手册(第4版)》根据Python专家MarkLutz的著名培训课程编写而成,是易于掌握和自学的Python教程。 《Python学习手册(第4版)》每一章都对Python语言的关键内容做单独讲解, 并且配有章首习题,便于你学习新的技能并巩固加深自己的理解。书中配有大量注释 的示例以及图表,它们都将帮助你轻松地学习Python3.0。 《Python学习手册(第4版)》学习Python的主要内建对象类型:数字、列表和 字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用 函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他工具,以便构建较大的组件。学习Python的面向对象编程工具, 用于组织程序代码。学习异常处理模型,以及用于编写较大程序的开发工具。了解高 级Python工具,如装饰器、描述器、元类和Unicode处理等。 Python算法教程 Python是一种面向对象、解释型计算机程序设计语言,其应用领域非常广泛,包括数据分析、自然语言处理、机器学习、科学计算以及推荐系统构建等。

Python入门你必须知道的11个知识点

Python入门你必须知道的11个知识点 Python被誉为全世界高效的编程语言,同时也被称作是“胶水语言”,那它为何能如此受欢迎,下面我们就来说说Python入门学习的必备11个知识点,也就是它为何能够如此受欢迎的原因。 1、Python适用于哪些应用场景? 这个没有固定答案,很多人都说Python不适合开发GUI的程序,但Python 自己的IDE——IDEL和第三方的IDE——Eric就是Python写的。 目前看到的更多的人是拿来写Web,使用如Django、web.py框架,没记错Flask也是。 也有一个情况用的比较多,用Python当胶水,与各种语言结合,共同完成某软件功能,注意观察也许你会发现在安装一些软件的时候会有Python的身影。 我个人还拿Python模拟过端口转发和DNS服务等,所以真的是要看真么用,而不是能怎么用。

另外大数据分析Python也是比较适合的,从载入到分析,再到保存结果等,Python有一整套的模块应对。 2、Python能够胜任大数据吗? Python很适合做大数据相关的分析,内置的C编译的模块能应对常见的操作,个别极端的算法建议用C重写相关模块。 Python本身的特点更多的是高效率的开发和简单的维护,速度交给C去吧,更多的问题其实出自写代码的人没有更好的使用,而不是效率不够高。比如排序,本来Python有非常高效的内置C编译的模块,却非要自己写算法,这样的结果不慢都是奇怪的。 另外还要看需求是CPU密集型,还是IO密集型,如果是CPU密集型建议这部分操作由C实现,IO密集型的效率不会因为Python而有多少改变。 C的效率是高,但框架搭起来也费劲,所以还是结合着来吧,也因此,Python 被称为胶水语言。 3、Python是否可以完全代替Shell? 完全可以,Shell的功能Python均可实现,而且代码量更少、结构更优、可阅读性更好,而Python可实现的功能Shell却不一定能,如运维中会用到的用于网络通信的Socket模块、用于WEB的Django框架、用于性能采集的psutil 模块等,而且Shell对操作系统的命令依赖性较强,Python可在更大程度上规避。 在一个Shell的IDE是个很大的问题,虽然Python的原生IDE不怎么样,但第三方的IDE还是功能十分强大的,虽然不能和微软的Virtual Studio相媲美,但也是能完全满足Python的开发需求的。

Django配置让其他电脑访问网站 - Python框架教程 - Django_Tornado_Web

Django配置让其他电脑访问网站 2013-01-11 14:55:04 来源: 其实在Django 带有一个内建的轻量级 Web 服务器,可供站点开发过程中使用。我们提供这个服务器是为了让你快速开发站点,也就是说在准备... 其实在Django 带有一个内建的轻量级 Web 服务器,可供站点开发过程中使用。我们提供这个服务器是为了让你快速开发站点,也就是说在准备发布产品之前,无需进行产品级 Web 服务器(比如 Apache)的配置工作。 但是实际开发中不是一个人开发,就需要多人能够访问到这台机器。那我们改如何配置呢?下面来看一下: 1.创建一个web项目 运行 1d j a n g o-a d m i n.p y s t a r t p r o j e c t p y t a b 命令在当前目录创建一个 pytab目录。 注意: 有过 PHP 编程背景的话,你可能习惯于将代码都放在 Web 服务器的文档根目录 (例如 /var/www 这样的地方)。而在 Django 中,你不能这样做。把任何 Python 代码放到 Web 服务器的文档根目录中都不是个好主意,因为这样一来,你就要冒着别人透过页面直接看到代码的风险。这对于安全可不是件好事。 所以,把代码放置在文档根目录 之外 的某些目录中。 2.运行内置服务器 使其运行,以便我们可以访问 如果还没有进入 mysite 目录的话,现在进入其中,并运行 python manage.py runserver 命令。你将看到如下输出: Validating models... 0 errors found Django version 1.4.3, using settings 'mysite.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C.

编程入门python教程的Web框架简介

编程入门python教程的Web框架简介 Python在当下是非常火热的,随着人工智能的发展,Python也迎来了很大的发展,今天,有非常多的Python框架,用来帮助你更轻松的创建web应用。接下来我们就来介绍一下Python Web的框架。 Python发源于八十年代后期。开发者是Centrum Wiskunde& Informatica的Guido van Rossum,这是位于荷兰阿姆斯特丹科学园区的一个数学和计算机科学研究中心。之后Van Rossum一直是Python开发很有影响的人物。事实上,社区成员给了他一个荣誉称号:终生仁慈独裁者(BDFL)。 经过初期的不起眼,Python已经成为互联网最流行的服务端编程语言之一。根据W3Techs的统计,它被用于很多的大流量的站点,超过了ColdFusion,PHP,和https://www.360docs.net/doc/386099498.html,。其中超过98%的站点运行的是Python2.0,只有1%多一点的站点运行3.0。 框架让开发更轻松

今天,有着大量的Python框架,它们可以让web应用的开发更轻松。这些框架把不同的模块集成在一起,让你更快的构架程序,而不用关注一些细节(例如socket和协议),框架提供了需要的所有功能。 作为分成两部分的系列文章的第一部分,我们会介绍一些最流行的Python 框架。虽然大部分现代的web框架都运行在服务端,也有一些框架开始尝试与客户端代码结合,可以在客户端运行(例如Skulpt和Trinket)。Python框架通常分为全栈框架和非全栈框架。全栈框架设计从用户体验到数据库的所有技术,非全栈框架则并不包含整个开发的全部技术。 此外还有一种微框架,也属于非全栈框架,但是更轻量级。有的情况下,微框架是比较适合的,有时又适合使用全栈框架。在文章的第二部分我们会对全栈框架和微框架做一个比较。 Django Django恐怕是最有代表性的Python框架了。它是一个遵循MMVC架构模式的开源框架。它的名字来自Django Reinhardt,一个法国作曲家和吉他演奏家,很多人认为他是历史上最伟大的吉他演奏家。位于堪萨斯洲的Lawrence 城的Lawrence Journal-World报社有两位程序员,Adrian Holovaty和Simon Willison,他们在2003的时候开发出了Django,用于给报纸开发web程序。 Django内置了模板引擎,同时也通过OOTB来支持流行的Jinja2引擎。它还支持基于正则的URL分发,可以通过简单的URL来完成复杂的映射。 Django的优势之一是只需要单独的安装包来安装。其他的一些类似的框架需要下载很多组件才能开始工作。而且,Django还有完善的保持更新的文档,对于开源项目来说这通常是短板。它是一个健壮的框架,很好的集成了很多来自

课课家教育-跟着王进老师学开发Python篇:基础入门案例讲解视频教程

课课家教育-跟着王进老师学开发Python篇:基础入门案例讲解视频教程 课程目标:跟着王进老师学开发Python系列课程:主要面对Python零基础学员,从基本环境搭建到基础语法,Python全栈,Django,MySQL数据库,Web前端、最后到爬虫和人工智能,课程循序渐进逻辑性强,让大家学以致用。适合人群:认真学习完第一季基础知识的朋友,有一定Python基础并想进一步提升的朋友。本课程通过案例讲解知识点,融入大量的操作实例,另外还配有项目源码可以自行修改、学习。 共计45个项目案例+项目源码,跟着王进老师尽情玩转Python解释器! 本课程涉及Python的基础语法,什么是变量,数据的类型,运算符,if语句,while语句,for循环,什么是集合,如何进行日期和时间的表示,如何使用函数等。 目录 章节1 部署开发环境案例讲解 第1节 案例01:控制台计算圆的周长和面积 第2节 案例02:实现周长和面积的GUI界面 00:30:54 第3节 案例02:完成GUI下周面和面积的功能

00:19:24 章节2 变量案例讲解 第1节 案例01:计算和打印学生成绩 00:39:35 第2节 案例02:判断一个数是否是回文数 00:45:48 第3节 案例03:输出100-1000之间所有的平方回文数00:22:00 第4节 案例04:完成进制转换GUI界面的设计 00:38:13 第5节 案例03:判断进制转换中输入值是否有效 第6节

案例03:完成进制的转换 00:21:59 章节3 运算符案例讲解 第1节 案例01:计算五位数的数值之和00:18:30 第2节 案例02:计算生日是一年中多少天00:25:03 第3节 案例03:计算最大值和最小值00:17:10 第4节 案例04:时间的计算方法01 00:29:33 第5节 案例04:时间的计算方法02

PythonWeb开发基础教程(Django版)(微课版)-教学大纲

《Python Web开发基础教程》教学大纲 学时:66 代码: 适用专业: 制定: 审核: 批准: 一、课程的地位、性质和任务 Web开发基础是普通高等学校计算机科学与技术专业的一门重要的专业基础课。通过本课程的学习,使学生能够在已有的计算机基础知识基础上,对Web开发有一个系统的、全面的了解、为掌握Web项目开发开发打下良好的基础;在系统理解和掌握Web开发基本原理的基础上,具有设计和开发Web项目的基本能力。 Web开发是一门实践性非常强的学科,它要求学生在理解和掌握程序设计和Web开发相关知识的基础上,充分利用实验课程,在计算机上动手完成程序的编写和调试。 二、课程教学基本要求 1.课程教学以Python Web开发基本方法为主,在教学过程中让学生掌握Web开发的基本原理和方法。 2.要求在教学过程中合理安排理论课时和实验课时,让学生有充分的使用在计算机上练习理论课程中学到的Python Web开发技巧和方法。 三、课程的内容 第1章 Python起步 了解Python Web简介内容,掌握配置Python Web开发环境和创建Django项目。 第2章 Django配置 了解Django项目的配置文件,掌握在Web服务器中部署项目。 第3章 URL分发 了解URL分发机制,掌握URL配置、URL参数传递、反向解析URL和URL命名空间。 第4章模型和数据库 掌握模型基础、数据操作、索引、特殊查询表达式、执行原始SQL查询和关系。 第5章视图 掌握定义视图、处理请求和响应、在视图中使用模型、基于类的视图、内置通用视图。 第6章模板 理解模板基础,掌握模板语言和模板继承。 第7章表单 了解表单基础,掌握Django表单进阶、模型表单、资源和Ajax。 第8章 Django工具 掌握Admin站点、用户认证、发送Email和会话控制。

Flask 入门系列教程(一)

语言储备 在学习 Flask 之前,你应该对 Python 和 HTML 的基础语法有了一定的了解,如果还使用过 JavaScript 语言那就更棒了。 对于 Python 语言就不用说了,Flask 就是 Python 的 Web 框架,如果没有Python 语言基础,又怎么能够书写 Flask 代码呢。 而对于 HTML 基础,甚至是 JavaScript 基础来说,都是 Web 的基础知识, 因为我们在编写 Web 程序的时候,不仅仅需要编写后台逻辑,对于前端代码也 会涉及到,比较构建前端页面,通过 AJAX 提交数据等等。这些都是需要 HTML 和 JavaScript 语言基础的支撑的。 环境准备 首先你当然需要拥有一个 Python 开发环境,无论是 Windows,MacOS 还 是 Linux 系统,安装 Python 都是很简单的事情,不过对于没有 Unix 操作系统 使用经验的初学者来说,我还是比较建议使用 Windows 作为开发环境。 而编辑器我推荐使用 PyCharm,它集成了丰富的插件,可以极大的提高我 们的开发效率,当然诸如 Sublime 等轻量级的编辑器也是很不错的,这个就看 个人的喜好情况了。 当然,既然要学习 Web 开发,浏览器也一定是必备的,你的电脑上一定按 照了 Chrome 或者 FireFox 吧,足够了! 接下来就是安装 Flask,使用 pip 安装即可,非常方便, pip install flask 现在我们已经完成了前期的准备工作,下面就一起来认识下 Flask 吧。 Hello Flask 后来,它逐渐发展成为一个成熟的 Python Web 框架,越来越受到开发者的 喜爱。目前它在 GitHub 上是 Star 数量最多的 Python Web 框架,甚至都超过了 大名鼎鼎的 Django。 Flask 是典型的微框架,作为 Web 框架来说,它仅保留了核心功能:请求 响应处理和模板渲染。这两类功能分别由 Werkzeug(WSGI 工具库)完成和Jinja(模板渲染库)完成。至于我们如果要实现其他的功能,比如收发邮件, 处理 WebSocket 请求,快速构建前端页面等,则可以使用 Flask 强大而丰富的 扩展插件,这些我们在后面的学习中再慢慢介绍。 一个最小程序 创建目录 首先我们先完成一个最小的 Web 程序,在浏览器页面上打印出 Hello Flask 字符。 我们现在自己的本地目录中创建一个项目文件夹,可以命名为“HelloFlask”。 然后使用 PyCharm 打开该目录文件夹。

如何自学-Python(干货合集)

如何自学Python(干货合集) Learn Python The Hard Way https://www.360docs.net/doc/386099498.html,/book/ 零编程基础学python,浅显易懂,操作性强。中文翻译版本: 笨办法学Python https://www.360docs.net/doc/386099498.html,/en/latest/in dex.html 其实python非常适合初学者入门,上手很容易。 我就是完全通过网上资源学了python的。 最大的是3点经验: 1.找一本浅显易懂,例程比较好的教程,从头到尾看下去。不要看很多本,专注于一本。把里面的例程都手打一遍,搞懂为什么。 2.去找一个实际项目练手。我当时是因为要做一个网站,不得已要学python。这种条件下的效果比你平时学一门新语言要好很多。所以最好是要有真实的项目做。可以找几个同学一起做个网站之类。 3.最好能找到一个已经会python的人。问他一点学习规划的建议,然后在遇到卡壳的地方找他指点。这样会事半功倍推荐几个网上的资源: 简明Python教程 与孩子一起学编程 Head First Python 中文版 笨办法学Python Dive.Into.Python中文版(附课程源码) Python核心编程 深入理解Python Python标准库 Python编程指南 diango_book中文版 解压密码均为:http://crossin.me ====================== 在线教程: 简明Python教程:简明Python 教程 (较新版):A Byte of Python Dive into Python:Dive Into Python 阶段一:前辈领进门。 第一眼是一个前辈给我看了看Python的代码,因为自己最早学习的是Java语言,第一眼看到Python的时候,前辈说,“Python是面向对象的”,然后就打印了几句代码。可我怎么也看不出到底哪里是“面向对象”的。前辈说“在Python

一步一步学Django

第一讲入门 1开篇 Django 是新近出来的 Rails 方式的 web 开发框架。在接触 Django 之前我接触过其它几种Python 下的 web framework, 但感觉 Karrigell 是最容易上手的。不过 Django 从我个人的感觉上来看,它的功能更强大,社区也很活跃,高手众多,发展也是极为迅速。 3 Django的入门体验 但 Django 呢?如果说最简单的web体验 Hello, Django! 如何写呢?决不会象 Karrigell 那样简单,只从它提供的教程来看,你无法在安装后非常 Easy 地写出一个 Hello, Django! 的例子,因为有一系列的安装和准备工作要做。那么下面我把我所尝试写最简单的 Hello, Django! 的例子写出来。请注意,我测试时是在 Windows XP 环境下进行的。 3.1 安装 python setup.py install 参考文档Django installed,一般地,Django 安装前还需要先安装 setuptools 包。可以从PyPI上搜到。目前最新的版本是 0.95 版,可以从Django的主页上面下载。如果你想从老的 0.91 迁移到最新版本,可以参阅RemovingTheMagic文档。安装后,建议检查pythoninstalldir/Scripts 目录是否在你的 PATH 环境中,如果不在,建议将这个目录设置到 PATH 中。因为如果你采用标准的 Python 安装方法,那么 Django 会自动在 Scripts 目录下安装 django-admin.py 程序。这样,一旦你设置了 Scripts 在 PATH 中,就可以在命令行下任何目录中执行 django-admin.py 了。 3.2 生成项目目录 因为 Karrigell 可直接开发,因此放在哪里都可以。而 Django 是一个框架,它有特殊的配置要求,因此一般不需要手工创建目录之类的工作, Django 提供了 django-admin.py 可以做这件事。为使用 django-admin.py ,建议将 Python 的 Scripts 目录加入到 PATH 环境变量中去。 django-admin.py startproject newtest 这样就在当前目录下创建了一个 newtest 目录,进去入可以看到有四个文件:这个 newtest 将是我们以后工作的目录,许多讲解都是基于这个目录的。 __init__.py 表示这是一个 Python 的包 manage.py 提供简单化的 django-admin.py 命令,特别是可以自动进行 DJANGO_SETTINGS_MODULES 和PYTHONPATH 的处理,而没有这个命令,处理上面环境变量是件麻烦的事情 settings.py 它是django的配置文件 uls.py url映射处理文件,Django的url映射是url对某个模块方法的映射,目前不能自动完成 在 0.91 版, django-admin.py startproject 会生成 apps 目录。但 0.95 版之后已经没有了。虽然 django-admin.py 为我们生成了许多东西,而且这些东西在以后的开发中你都需要熟悉,但现在我们的目标是最简单的体验,就认为我们不需要知道它们都有什么用吧。 项目创建好了,那么我们可以启动服务器吗? Django 为了开发方便,自带了一个用于开发的web server。在 0.91 版,你需要至少修改一下 settings.py 中的 DATABASE_ENGINE ,如果你不改,那么 Django 会报错。在0.95版之后,不再需要设置了。 3.3.1 启动 web server:别急呀,还没看见 Hello, Django! 在哪里呢。是的,我只是想看一看, Django 能否启动。 manage.py runserver

Python入门教程之Python应用领域

Python入门教程之Python应用领域 Python被誉为全世界高效的编程语言,下面这篇关于Python入门教程的文章主要是写Python的应用领域,相信很多人对这方面应该很感兴趣吧。 ?云计算: 云计算最火的语言,典型应用OpenStack ?WEB开发 python相比php\ruby的模块化设计,非常便于功能扩展;多年来形成了大量优秀的web开发框架,并且在不断迭代;如目前优秀的全栈的django、框架flask,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好,python已经成为自动化运维平台领域的事实标准;众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。 ?人工智能 基于大数据分析和深度学习而发展出来的人工智能本质上已经无法离开python的支持,目前世界优秀的人工智能学习框架如Google的

TransorFlow 、FaceBook的PyTorch以及开源社区的神经网络库Karas等是用python实现的,甚至微软的CNTK(认知工具包)也完全支持Python,而且微软的Vscode都已经把Python作为第一级语言进行支持。 ?系统运维 Python在与操作系统结合以及管理中非常密切,目前所有linux发行版中都带有python,且对于linux中相关的管理功能都有大量的模块可以使用,例如目前主流的自动化配置管理工具:SaltStackAnsible(目前是RedHat的)。目前在几乎所有互联网公司,自动化运维的标配就是python+Django/flask,另外,在虚拟化管理方面已经是事实标准的openstack就是python实现的,所以Python是所有运维人员的必备技能。 ?金融 量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库

Python入门基础教程

Python入门基础教程 有人说,看着Python简单易学,想尝试自学,打算找些入门教程自学Python,不知道哪的视频好。现在,你可来对地方了,接下来参考下千锋Python 入门教程。 Python基础教程:https://www.360docs.net/doc/386099498.html,/s/1qYTZiNE Python课程教学高手晋级视频总目录: https://www.360docs.net/doc/386099498.html,/s/1hrXwY8k Python课程windows知识点:https://www.360docs.net/doc/386099498.html,/s/1kVcaH3x Python课程linux知识点:https://www.360docs.net/doc/386099498.html,/s/1i4VZh5b Python课程web知识点:https://www.360docs.net/doc/386099498.html,/s/1jIMdU2i Python课程机器学习:https://www.360docs.net/doc/386099498.html,/s/1o8qNB8Q Python课程-树莓派设备:https://www.360docs.net/doc/386099498.html,/s/1slFee2T 看完视频,建议你了解一下Python可以做什么: 1.网站后端程序员:使用它单间网站,后台服务比较容易维护。如:Gmail 、Youtube、知乎、豆瓣;

2.自动化运维:自动化处理大量的运维任务; 3.数据分析师:快速开发快速验证,分析数据得到结果; 4.游戏开发者:一般是作为游戏脚本内嵌在游戏中; 5.自动化测试:编写为简单的实现脚本运用在Selenium/lr,可实现自动化; 6.网站开发:借助django,flask框架自己搭建网站; 7.爬虫获取或处理大量信息:批量下载美剧、运行投资策略、爬合适房源、系统管理员的脚本任务等。 千锋Python培训课程共23周10大阶段力造Python全栈工程师,直击月薪15000!内容包括3.Python语言基础2.7.3、Python 3.x 进阶与python 第三方库、PyQt开发、Linux指令、Linux Shell、Linux python运维自动化、KaliLinux 安全课程、Linux 网站后台-python开发、Python 数据库MySQL Oracle开发、HTML5基础CSS基础。 当然,没说完,还有Java-Script JQuery基础、Python项目爬虫,服务集群,网站后台,微信公众号开发、Python机器学习与数据挖掘,数据分析框架与实战、Python 物联网树莓派的开发。

相关主题
相关文档
最新文档