学习django
django 项目目录介绍
manage.py
与项目进行命令交互的命令行工具集的入口
项目管理器
wsgi.py
WSGI (python web server gateway interface)
python 服务器与网关接口
url.py
url配置文件
diango 项目中所有地址(页面)都需要我们自己去配置其URL
setting.py
开启项目
两种方法
1、通过PyCharm创建 直接run
2、命令行创建 django-admin.py startproject projectName
启动 python manage.py runsever
创建应用
python manage.py startapp blog
然后在setting.py 中的INSTALLED_APPS添加应用名
migrations 数据移植模块
admin.py 该应用的后台管理系统配置
apps.py 该应用的一些配置
models.py 数据模块 ,使用ORM框架
test.py 自动化测试模块
view.py 执行响应的代码所在模块,代码逻辑处理的主要地点
创建第一个页面(响应)
编辑blog.views
每个响应对应一个函数,函数必须返回一个响应
函数必须存在一个参数, 一般约定为request
每个响应对应一个URL
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello World")
配置URL
编辑url.py
每一URL都已url的形式写出来
url函数放在urlpatterns列表中
url函数三个参数:URL(正则),对应方法,名称
import blog.views as bv
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^index/', bv.index),
]
配置子URL 防止项目过大,url无法管理的问题
项目下的urls.py 增加代码 url(r'^blog/', include('blog.urls'))
应用下新建urls.py 文件,在urls.py中配置自己的url
例如:
urlpatterns = [
url(r'^index/$', views.index),
]
Templates
Html 文件
使用Django DTL语言
也可以使用第三方模板(如:Jinja2)
使用:
在App的根目录下创建名叫Templates的目录
在该目录下创建HTML文件
在Views.py中返回render()
render 传入三个参数 request 、XXX.html、(字典)
html中用{{传入的字典的key}}
如下所示
views.py
def index(request):
return render(request, 'index.html', {'haha': '你是狗'})
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
你好<br/>
{{ haha }}
</body>
</html>
models
通常,一个Model对应数据库的一张数据表
Django中的Modles以类的形式表现
它包含一些基本字段以及数据的一些行为
创建数据表
class Article(models.Model):
title = models.CharField(max_length=32, default='Title')
content = models.TextField(null=True)
def __str__(self):
return self.title
生成数据表
命令行中进入manage.py同级目录
执行 python manage.py makemigrations app名(可选)
在执行 python manage.py migrate
查询数据表生成sql语句
python manage.py sqlmigrate app名 0001
获取数据库中的数据
views.py 中import models
article = models.Article.object.get(pk=1)
HTML DTL语言
引用一般对象
{{ object }} 可以用 . 引用对象里面的属性
for循环
{% for acticle in articles %}
{% endfor %}
Django中的超链接
超链接目标地址
href后面是目标地址
templates中可以用"{%url 'app_name:url_name' param%}"
<h1>
<a href="{% url 'blog:edit_page' 0%}">新文章</a>
</h1>
{% for article in articles %}
<h1><a href="{% url 'blog:article_page' article.id %}">{{ article.title }}</a></h1>
<h3>{{ article.content }}</h3>
<br/>
{% endfor %}
表单提交Post方法
<html>
<form action="{% url 'blog:edit_action' %}" method="POST">
<input type="text" name="title"/>
<input type="text" name="content"/>
<input type="submit" value="提交">
</form>
</html>
获取请求参数
def edit_action(request):
# 获取提交的参数,并在数据库中添加数据
title = request.POST.get('title', 'TITLE') # title = request.POST['title']
content = request.POST.get('content', 'CONTENT') # request.POST['content']