python django入门_Python Django初入门

一、安装

pip3 install django -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

二、启动

1.生成mysite工程目录

django-admin startproject mysite

2.启动程序

python3 manage.py runserver 127.0.0.1:8001

3.通过web访问

http://127.0.0.1:8001/    出现django主页面说明安装成功

PS: mysite目录结构如下:

mysite--->  db.sqlite3

manage.py     #管理Django程序

#python manager.py

#python manager.py startapp xx

#python manager.py   migrate

#python manager.py   makemigrations

mysite  (对程序进行配置  )

__init__.py

__pycache__

settings.py        #配置文件

urls.py               #URL对应关系

wsgi.py             #一套接口,遵循WSGI规范

三、创建app

要在工程目录下创建 ,比如 上面提到的mysite

python manager.py startapp cmdb

python manager.py startapp openstack

app目录:

migrations    #数据操作记录

admin.py      #Django为我们提供的后台管理

apps.py        #配置当前app

models.py    #ORM,写指定的类,通过命令可以创建数据库表

tests.py        #测试

views.py       #写业务代码

1.配置模板路径

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

'DIRS': [os.path.join (BASE_DIR, 'templates')]

,

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},

]

2.配置静态目录

STATICFILES_DIRS = (

os.path.join(BASE_DIR,'static'),

)

四、总结

1.Django请求生命周期

-->URL对应关系(匹配)-->视图函数-->返回用户字符串

-->URL对应关系(匹配)-->视图函数-->打开一个HTML文件,读取内容

2.创建django project

django-admin startproject mysite

python manage.py startapp cmdb

3.配置

模板路径

静态文件路径

#CSRF

4.编写程序

a  url.py   /index  ->  func()

b  views.py

def func(request):

#包含所有请求数据

return HttpResponse('字符串')

return render(request,'index.html',{'li':[11,22,33]})

return redirect('URL')

c  模板语言

{% for item in li %}

{{item}}

{% endfor %}

********************  索引用点 *****************

{{itme.0}}

Python工程四个点

一、路由系统,URL

1.path('login/', views.login),

2.path('home/', views.Home.as_view),

3.re_path(r'^detail-(\d+).html', views.detail),

4.re_path(r'^detail-(?P\d+)-(?P\d+).html', views.detail),

PS:

def detail(request,*args,**kwargs):

pass实战

a re_path(r'^detail-(\d+)-(\d+).html', views.detail),

def func(request,nid,uid)

pass

def func(request,*args)

args = (2,9)

def func(request,*args,**kwargs)

args = (2,9)

b re_path(r'^detail-(?P\d+)-(?P\d+).html', views.detail),

def func(request,nid,uid):

pass

def func(request,**kwargs):

kwagrs = {'nid':1,'uid':3}

def func(request,*args,**kwargs):

args = (2,9)

5.name

对URL路由关系进行命名,以后可以根据此名称生成自己想要的URL

url(r'^home/',views.index,name='i1'),

url(r'^index/(\d+)/(\d+)/',views.index,name='i2'),

url(r'^home/(?P\d+)/(?P\d+)/',views.index,name='i3'),

def func(request,*args,**kwagrs):

from django.urls import reverse

url1 = reverse('il') # home/

url2 = reverse('i2',args=(1,2,)) # index/1/2

url3 = reverse('i3',kwagrs={'pid':1,'nid':9}) # home/1/9

xxx.html

{% url "i1" %} # home/

{% url "i2" 1 2 %} # index/1/2

{% url "i3" pid=1 nid=2 %} # home/1/9

6.

urlpatterns = [

url('r^cmdb/,include("app01.urls"));

url('r^cmdb/,include("app02.urls"));

]

7.默认值

8.命名空间

模板语言:

{% url "indexx" %}

{% url "indexx" 2 %} //2随便加,接收上面的(/d+)

{{ request.path_info }} //当前URL

二、视图

1、获取用户请求数据

request.GET

request.POST

request.FILES

2、checkbox,select多选的内容

request.POST.getlist()

3、上传文件

#上传文件,form标签做特殊设置

obj = request.FILES.get('file_name')

obj.name

f = open(obj.name,mode='wb')

for item in obj.chunks():

f.write(item)

f.close()

4、FBV&CBV

function base view

url.py

index--->函数名

view.py

def   函数(request):

===>

/index/  ---->  函数名

/index/  ---->  类

5、装饰器

未完待续

三、模板

四、ORM操作

1.根据类自动创建数据库表

a.先写类

from django.db import models

# Create your models here.

class UserInfo(models.Model):

#隐含id列,自增,主键

#用户名列,字符串类型,指定长度

username = models.CharField(max_length=32)

password = models.CharField(max_length=64)

字段:

字符串类型

数字

时间

二进制

自增(primary_key=True)

字段的参数:

null #db是否可以为空

default #默认值

primary_key #主键

db_column #列名

db_index #索引

unique #唯一索引

unique_for_data #截取日期做索引

unique_for_month

unique_for_year

auto_now_add #创建时自动生成当前时间(models.DateTimeField(auto_now_add=True,null=True)

auto_now #更新时,自动更新为当前时间

#obj = UserGroup.objects.filter(id=1).update(caption='CEO')

#obj = UserGroup.objects.filter(id=1).first()

#obj.caption = 'CEO'

#obj.save()

choices #django admin中显示下拉框,避免连表查询

blank #django admin是否为空,blank=True表示允许

verbose_name #django admin中显示中文

editable #django admin中是否可以被编辑

error_messages #错误信息

help_text #django admin的提示

validators #django form 自定义错误信息

b.注册app

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app',

]

c.执行命令

python3 manage.py  makemigrations

python3 manage.py  migrate

d.**********************注意**********************

Django默认使用MySQLdb模块连接mysql,需要修改为pymysql,在project同名文件夹下的__ini__添加如下代码

import pymysql

pymysql.install_as_MYSQLdb()

2.根据类对数据库表中的数据进行各种操作

一对多:

a.外键

b.外键字段

c.models.tb.object.create(name='root',user_group_id=1)

d.   userlist = models.tb.object.all()

for row in userlist:

row.id

row.user_group_id

row.user_group.caption

创建

def orm(request):

#法一

#models.UserInfo.objects.create(username='root',password='123')

#法二

#obj = models.UserInfo(username='liyang',password='456')

#obj.save()

#法三

dic = {'username':'xiaohong','password':'666'}

models.UserInfo.objects.create(**dic)

return HttpResponse('OK')

查询

#result = models.UserInfo.objects.all()

#result = models.UserInfo.objects.filter(username='root')

result = models.UserInfo.objects.filter (username='root',password='123') #逗号类似and效果

for row in result:

print(row.id,row.username,row.password)

删除

models.UserInfo.objects.filter(id=3).delete()

#models.UserInfo.objects.all().update(password=999)

models.UserInfo.objects.filter(id=2).update (password=888)

外键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值