《djando入门与实现》慕课笔记

来源:互联网 发布:遗传算法bp神经网络 编辑:程序博客网 时间:2024/05/21 21:38

基础知识

试验

打开https://www.djangoproject.com/,F12,NetWork,F5,点击Name下www.djangoproject.com/,复制Response在本地,再在本地打开。显示会和直接打开https://www.djangoproject.com/有区别(经过前端处理)。

请求相应过程

本地浏览器->(发送http请求)->网站服务器(处理请求)->(返回HTTP请求)->HTMP文档–>本地浏览器
浏览器经过通信后获取该页面的源代码文档(HTML等),浏览器解析文档后以适当的形式展现给用户。

安装

pip安装pip install Django==1.11.6

#源码安装   #解压文件,进入目录cmdpython setup.py install  #安装python -m django --version  #查看版本

创建项目

cmd中输入django-admin startproject myblog(安装成功之后就可以执行django-admin命令)
项目结构:

manage.py  #与项目进行交互的命令行工具集入口myblog    __init__.py    settings.py    urls.py    wsgi.py

启动服务器

#当前目录D:\Python\djando\imooc\myblogpython manage.py  #查看所有命令python manage.py runserver [8000] #启动服务器,默认端口号8000网页输入 127.0.0.1:8000/localhost:8000进入界面

myblog介绍

myblog目录
__init__.py,python中声明模块的文件,默认为空。
wigi.py(Python Web Server Gateway Interface),python服务器网关接口,python应用与Wib服务器之间的接口。
urls.py,URL配置文件,Django项目中所有地址(页面)都需要我们自己去配置URL。
settings.py,总配置文件,里面包含了数据库,Web应用,时间等各种配置。

#修改DEBUG=TrueALLOWED_HOSTS=['localhost']刷新页面(F12)抛出404错误,输入127.0.0.1:8000抛出400错误

创建应用

python manage.py startapp blog  #创建应用(不可以与Python模块名相同),名为blog添加应用名(blog)到settings.py中的INSTALLED_APPS里面(不能忘)

应用项目介绍

migrations,数据移植模块
admin.py,后台管理系统配置
apps.py,前面应用的配置
models.py,数据模块,使用ORM框架,类似MVC结构中Models
tests.py,自动化测试模块,在这里编写测试脚本
views.py,执行响应的代码模块,项目中大部分代码均在这里编写
编辑blog.views:
每个响应对应一个函数,函数必须返回一个相应.
函数必须存在一个参数,一般为request.
每个相应函数对应一个URL

#bolg/views.pyfrom django.http import HttpResponsedef index(request):    return HttpResponse('hello world')

配置myblog.urls:
每个url都已url函数的形式写出来,url函数存放在urlpatterns中.
url函数三个参数:URL地址(正则表达式),对应方法,名称。

import blog.views as bvurlpatterns = [    url(r'^admin/', admin.site.urls),  #原来就有的    url(r'^index/', bv.index),]

重启服务python manage.py runserver
网页中输入localhost:8000/index/,添加“/index/”

第二种配置URL

在根目录下url.py中from django.conf.urls import include
根urls.py中urlpatterns中第二个改为url(r'^blog/', include('blog.urls'))
在APP(blog)目录下创建新urls.py文件:

from django.conf.urls import urlfrom . import viewsurlpatterns = [url(r'^index/$', views.index)]  #注意$前面有一个/

注意事项:根urls.py中针对APP配置URL名称,是该APP所有URL的总路径。配置URL时注意正则表达式结尾符号$和/.

Templates

Templates是一个HTML文件,使用了Django模板语言(DTL),可以使用第三方模板(在settings.py中TEMPLATES的’BACKEND’)
在APP目录下创建templates目录
在templates创建html文件,名为index并在”body”添加<h1>Hello Blog!</h1>
在views.py中返回render(),修改index函数return render(request, 'index.html')

DTL使用

APP目录下render函数支持dict类型参数,该字典是后台传递套模板的参数,键为参数名。使用方法为{{参数名}}
在APP下views中render添加参数{“hello”:”hello Bolg!!”},在index.html中修改<h1>{{hello}}</h1>

注意事项

新建APPpython manage.py startapp blog2
在根settings.py中INSTALLED_APPS添加’blog2’
将blog中templates文件夹(index.html中修改<\h1>hello blog2</\h1>)和urls.py复制过来
blog中views.py中index函数改为return render(request, 'index.html'),再复制其内容到blog2中views.py
此时在cmd中运行Python manages.py runserver启动应用,在网页中输入localhost:8000/blog2/index
将显示localhost:8000/blog/index一样的内容
原因:DIango按照INSTALLED_APPS中添加顺序查找Templates,不同APP下Tempaltes同名.html文件会造成冲突.
解决:在APP的Templates目录下创建以该APP为名的文件夹,将index.html移动到该文件夹. 再修改blog和blog2中views.py,如return render(request, 'blog2/index.html')

Models

一个Models对应数据库中一张表,Django中Models以类的形式表现,包含一些基本的字段和数据类型.
ORM(Object Relation Mapping),实现对象和数据库之间的映射,隐藏数据访问的细节,不需要编写SQL语言.

编写Models

在应用根目录下创建models.py,并导入model模块(默认存在)
创建类,继承models.Model,该类就是一张数据表. 在类中创建字段.\
字段即类中属性(变量)

class Article(models.Model):    title=models.CharFiled(max_lenght=32, default='Title')    content=mdoels.TextField(null=True)

字段的可选参数参考:https://docs.djangoproject.com/en/1.11/ref/models/fields/

生成数据表

命令行进入manage.py目录
执行python manage.py makemigrations [app](准备迁移)
再执行python manage.py migrate(执行迁移)
查看Django会自动在app/migrates/目录下生成移植文件
执行python manage.py sqlmigrate 应用名 文件id查看SQL语句
默认sqlite3的数据库在项目根目录下db.sqlite3
使用SQLite打开,并选择blog_artcile数据库,在选择Data添加一条数据title(hello);content(hello blog)
views.py中

from . import modelsdef index(request):    article = models.Article.objects.get(pk=1)    return render(request, 'blog/index.html',{'article':article)

templates/blog/index.html

<h1>{{article.title}}</h1><h2>{{article.content}}</h3>

启动服务python manage.py runserver
网页localhost:8000/blog/index

原创粉丝点击