Python Django

Posted yc紫日

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Django相关的知识,希望对你有一定的参考价值。

官网

       https://www.djangoproject.com/

概念

       Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.

安装

       官网下载与本机Python对应版本的Django后,python setup.py install

       版本选择 - 长期支持版本Django 1.11.x、Django 1.8.x

       python -m django --version

常用命令

创建项目

       django-admin startproject project_name

创建应用

       python manage.py startapp app_name

       必须添加应用名到settings.py的INSTALL_APPS里(直接添加应用名即可)

使用开发服务器

       python manage.py runserver

       python manage.py runserver 8080

       python manage.py runserver 0:8080

       注:让其他服务器也能访问到需要在runserver后跟${本机IP}:port或者0.0.0.0:port或者0:port

       https://docs.djangoproject.com/en/2.0/ref/django-admin/#runserver

创建管理员

       python manage.py createsuperuser

修改管理员密码

       python manage.py changepassword username

项目目录结构分析(__init__.py不再说明)

>>>创建项目后(${workspace}/${project_name}下)

manage.py

       与项目进行交互命令行工具集的入口,即项目管理器。

       可以进行如清理会话、启动服务等工作

${project_name}

       项目的一个容器,包含项目的一些基本配置。

       目录名称不建议修改。(已作为包加载,更改较麻烦)

${project_name}/settings.py

       项目的总配置文件。包含了项目全局变量、数据库、web应用、时间等各种配置

${project_name}/urls.py

       项目的url配置文件

       django项目中所有地址(页面)都需要我们自己去配置URL

       https://docs.djangoproject.com/en/2.0/topics/http/urls/

       通过包模式引入${app_name}/views.py(import ${app_name}.views,然后配置该views中的函数到urlpatterns中)

${project_name}/wsgi.py

       WSGI - Python Web Server Gateway Interface

       python服务器网关接口,即python应用与web服务器之间的接口

>>>创建应用后(${workspace}/${project_name}下)

${app_name}/admin.py

       当前应用的后台管理系统配置文件

${app_name}/apps.py

       关于该应用的一些配置

       Django-1.9之后自动生成

${app_name}/migrations/

       数据库迁移模块

${app_name}/models.py

       数据模型模块(创建数据表时使用)

       使用ORM框架

       类似于MVC结构中的Models

${app_name}/tests.py

       自动化测试模块

${app_name}/views.py

       执行响应的代码所在模块

       代码中逻辑处理的主要地点

       项目中大部分代码均在这里编写

       类似于MVC结构中的Views

${app_name}/urls.py(需自行创建)

       见${project_name}/urls.py的Including another URLconf

       在${project_name}/urls.py中指定各应用使用的urls配置文件,在多应用、多页面时便于管理

${app_name}/templates(需自行创建)

       template放置的就是HTML文件

       template使用模版引擎(默认使用Django模板语言(DTL))

       可以使用第三方模版(如Jinja2)

       修改模版:${project_name}/settings.py -> TEMPLATE -> BACKEND

 

使用django搭建服务器思路

创建项目

       创建并添加应用

编写urls.py来添加访问的url

       可include各应用的urls.py

       可指定url的name,name作用见下

根据urls.py中的url编辑views.py

       可以获取到该url本身

       可以直接返回字符串,

       可以返回templates下的html文件

       每个url对应一个函数

       一个函数可以对应多个URL

       函数必须返回一个响应(HttpResponse,或者render)

       函数最少有一个形参,一般使用request来表示

编写html文件

       可以获取到views.py中传进来的参数

       可以获取到该url本身

Demo

       https://github.com/HanChengITer/PyStudy/tree/master/django_demo

views.py、templates文件夹、urls.py关系

       url所带的参数可以在views.py中使用request.GET[${param_name}]来获得

       urls.py中如果有使用正则分组匹配到的非url参数,则需在views.py的函数定义处使用对应数量的形参接收

       templates目录下放置着所有的html

       views.py如果要在界面中显示string,则使用HttpResponse;

       views.py如果需要显示指定HTML,则需要使用render(request, \'HTML位置\', \'传递给HTML的参数dict\')渲染,且该HTML位于该应用下的templates文件夹中

       注意:如果一个项目中有多个应用使用的template有同名(如index.html),则会出现问题,所以解决办法:1.在templates目录下再建立一个以应用名命名的文件夹,将该同名template(即HTML)放在该目录下;2.创建HTML时即以应用名区分

urls.py中name的作用

       为每个进入到服务器urls.py中的url取一个名字,通过这个名字,我们可以在templates下的HTML文件中以变量形式获取到当前访问的url,这样,在我们修改了url.py中的url路径(分组有变动的情况除外),我们不需要修改views.py和template下的py文件中的内容

 

 

错误

1. You have 14 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run \'python manage.py migrate\' to apply them.

http://blog.csdn.net/xufeng0991/article/details/40421857

附录

python代码调试

http://www.cnblogs.com/zhbzz2007/p/5502792.html

django学习网站

https://code.ziqiangxuetang.com/django/

virtualenv和virtualenvwrapper插件的使用

https://www.jianshu.com/p/6a3ff66cb8d3

基本命令

https://code.ziqiangxuetang.com/django/django-basic.html

Demo - HelloWorld

https://code.ziqiangxuetang.com/django/django-views-urls.html

views网址参数获得与网址获得

https://code.ziqiangxuetang.com/django/django-views-urls2.html

urls中name作用/url内部跳转

https://code.ziqiangxuetang.com/django/django-url-name.html

模版基础

https://code.ziqiangxuetang.com/django/django-template.html

模板中的循环、判断、过滤器等使用

https://code.ziqiangxuetang.com/django/django-template2.html

 

以上是关于Python Django的主要内容,如果未能解决你的问题,请参考以下文章

Django Python - 无法建立连接,因为目标机器主动拒绝它

django python - 关系不存在

Django Python - 在公共标题中添加表值

将表单保存到数据库(Django Python)

Django python:使用 DateInput -- 找不到所需的参数“年份”(位置 1)

DjangoPython安全编码与代码审计