python-day19 Django模板,路由分发,ORM

@获取文件所有数据

request.FILES

request.POST.get('fafafa')#拿到文件名

user = request.POST.get('user',None)#get不报错

enctype="multipart/form-data"获取文件数据,django识别为上传文件,不加则表示上传字符串;

@要使类的名字可以打印

class Foo:
    pass
    def __str__(self):
        return '123'
obj=Foo()
print(obj)

#结果:123

@提交并读取文件

v=request.FILES.get('fafafa')
print(v)
f=open(v.name,'wb')
for i in v.chunks():
    f.write(i)
f.close()

@19章重点

一、路由系统,URL
1url(r'^index/', views.index),
url(r'^home/', views.Home.as_view()),
2url(r'^detail-(\d+).html', views.detail),
3url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
PS:
def detail(request, *args, **kwargs):
    pass
实战:
a.
url(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.
url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
def func(request, nid, uid):
    pass
def funct(request, **kwargs):
    kwargs = {'nid': 1, 'uid': 3}
def func(request, *args, **kwargs):
    args = (2, 9)
4name
URL路由关系进行命名, ** ** *以后可以根据此名称生成自己想要的URL ** ** *
url(r'^asdfasdfasdf/', views.index, name='i1'),
url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),
url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),
def func(request, *args, **kwargs):
    from django.urls import reverse
    url1 = reverse('i1')  # asdfasdfasdf/
    url2 = reverse('i2', args=(1, 2,))  # yug/1/2/
    url3 = reverse('i3', kwargs={'pid': 1, "nid": 9})  # buy/1/9/
xxx.html
{ % url
"i1" %}  # asdfasdfasdf/
{ % url
"i2"
1
2 %}  # yug/1/2/
{ % url
"i3"
pid = 1
nid = 9 %}  # buy/1/9/
注:
# 当前的URL
request.path_info
5、多级路由
project / urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
    url(r'^cmdb/', include("app01.urls")),
    url(r'^monitor/', include("app02.urls")),
]
app01 / urls.py
from django.conf.urls import url, include
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^login/', views.login),
]
app02 / urls.py
from django.conf.urls import url, include
from django.contrib import admin
from app02 import views
urlpatterns = [
    url(r'^login/', views.login),
]
6、默认值(欠)
7、命名空间(欠)
二、视图
1、获取用户请求数据
request.GET
request.POST
request.FILES
PS:
GET: 获取数据
POST: 提交数据
2checkbox等多选的内容
request.POST.getlist()
3、上传文件
# 上传文件,form标签做特殊设置
obj = request.FILES.get('fafafa')
obj.name
f = open(obj.name, mode='wb')
for item in obj.chunks():
    f.write(item)
f.close()
4FBV & CBV
function
base
view
url.py
index -> 函数名
view.py
def 函数(request):
    ...
== ==
/ index / -> 函数名
/ index / ->
== ==
建议:两者都用
5、装饰器

三、模板
四、ORM操作
select *
from tb where
id > 1
# 对应关系
models.tb.objects.filter(id__gt=1)
models.tb.objects.filter(id=1)
models.tb.objects.filter(id__lt=1)
创建类
a.先写类
from django.db import models
# app01_userinfo
class UserInfo(models.Model):
    # id列,自增,主键
    # 用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
b.注册APP
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
]
c.执行命令
python
manage.py
makemigrations
python
manage.py
migrate
d. ** ** ** ** ** 注意 ** ** ** ** ** *
Django默认使用MySQLdb模块链接MySQL
主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
import pymysql
pymysql.install_as_MySQLdb()
1.
根据类自动创建数据库表
# app下的models.py
python
manage.py
makemigrations
python
manage.py
migrate
字段:
字符串类型
数字
时间
二进制
自增(primary_key = True
字段的参数:
null               -> db是否可以为空
default            -> 默认值
primary_key        -> 主键
db_column          -> 列名
db_index           -> 索引
unique               -> 唯一索引
unique_for_date    ->
unique_for_month
unique_for_year
auto_now           -> 创建时,自动生成时间
auto_now_add       -> 更新时,自动更新为当前时间
# 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是否可以为空
verbose_name      -> django
admin显示字段中文
editable          -> django
admin是否可以被编辑
error_messages    -> 错误信息欠
help_text         -> django
admin提示
validators          -> django
form, 自定义错误信息(欠)
创建
Django
用户:python
manage.py
createsuperuser
2.
根据类对数据库表中的数据进行各种操作
一对多:
a.外检
b.
外键字段_id
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

http: // www.cnblogs.com / wupeiqi / articles / 5246483.
html

@注释掉html内容:

<!--

-->

@链接里面含有?nid则被SEO判断为动态页面,没有的话就是静态。

猜你喜欢

转载自www.cnblogs.com/AKmendo/p/9585866.html