get获取数据,post发送数据。
Django生命周期:
->url对应关系(匹配)->视图函数->返回用户字符串
->url对应关系(匹配)->视图函数->打开一个html文件,读取内容
redirect(‘只能填url’)
HttpResponse(‘字符串’)
render(request, “html模版的路径”)
1、request.POST['username']
2、request.POST.get('username', None)
选2
1存在一个问题,如果username不存在,会报错
1、安装
pip3 install django
2、创建工程
django-admin startproject project_name
3、启动
启动前需要先进入刚刚创建的项目中,最后一个参数不填就是默认127.0.0.1:8000,可以修改端口
python3 manage.py runserver 127.0.0.1:8000
启动完成之后,打开网址,输入127.0.0.1:8000,看到如下就说明成功
4、增加内容
Django程序已经建成功了,下面来做一些修改,在目录下新建一个文件夹,新建的文件夹下再新建一个文件s1.py
from django.shortcuts import HttpResponse
def index(request):
return HttpResponse("OK")
修改urls.py文件
from django.contrib import admin
from django.urls import path
from laoniu import s1
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', s1.index)
]
重新启动,再来运行
5、django目录
project_name
project_name # 对整个程序进行配置
init.py
settings.py # 配置文件
url.py # url对应关系
wsgi.py # 一套规则,一套接口,本质上帮助创建socket,遵循wsgi规范,产品上线不用默认的,用uwsgi+ngnix
manage.py # 管理Django程序,有一下命令:1、python3 manage.py 2、python3 manage.py startapp ** 3、python3 manage.py makemigrations 4、python3 manage.py migrate
6、创建app
python3 manage.py startapp cmdb # csdb是app的名字
创建后的相应路径如下所示
cmdb
migrations: 数据操作记录(修改表结构)
__init__: python2中必须存在,不然导入文件时会出错,python3无所谓
admin: django提供的后台管理
apps: 配置当前app
models: ORM,写指定的类,通过命令创建数据库结构
tests: 单元测试
views: 业务代码
在setting.py中添加该app的信息
这样就创建了一个app文件夹,接下来把我们的业务逻辑的代码放在cmdb的文件中,如下
from django.shortcuts import render
# Create your views here.
from django.shortcuts import HttpResponse
def home(request):
return HttpResponse('<h1>Hello_View</h1>')
修改urls.py文件如下,
from django.contrib import admin
from django.urls import path
from laoniu import s1
from cmdb import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', s1.index),
path('h.html/', views.home)
]
运行,可以得到如下结果
7、创建静态文件和模版文件
在Django目录下创建两个文件夹static和templates用来存放静态文件和模版文件
8、在settings.py中添加配置信息
静态文件配置需要添加如下代码
STATICFILES_DIR = (
os.path.join(BASE_DIR, "static"),
)
注:只有这样,静态文件在我们的项目中才会起作用。
模版路径需要在TEMPLATES中添加如下代码
注:这样我们就不需要自己写逻辑去去读html文件中的内容,Django的render会帮助我们处理该过程。
还有一步,在这里,先注释settigns.py的csrf(跨栈请求伪造),防止报错
9、模版语言
views.py
return render(request, "index.html", {
'currrent_user': 'seth',
'user_list': ['seth', 'bob'],
'user_dict': {'k1':'v1','k2':'v2'}
})
html
<a>{{current_user}}</a>
<a>{{user_list.0}}</a>
<a>{{user_dict.k1}}</a>
{% for item in user_list %}
{% endfor %}
{% if age %}
<a>have age</a>
{% if age > 16 %}
<a>old boy</a>
{% endif %}
{% else %}
<a>no age</a>
{% endif %}
10、路由系统
项目地址:
https://github.com/Stark-Xue/didi