1,Django请求的生命周期
路由系统-视图函数(获取模板+数据->渲染)->字符串返回给用户
2,路由系统
/index/ 函数或类.as_view()
/detail(\d+)/ 函数或类.as_view()
/detail(?P<nid>\d+)/ 函数或类.as_view()(参数)
/detail/ 路由分发include("app01.urls")
/detail/ name='a1' 路由分发include("app01.urls")
视图中:reverse
模板中:{% url "a1"%}
3,视图
FBV:函数 def index(request,*args,**kwargs):
CBV:类 class Home(views.view):
def get(self,request,"args"):
dispatch
获取用户请求中的数据
request.method
request.POST.get
request.GET.get
request.FILES.get
#checkbox,
request.......getlist()
request.path_info 文件对象=request.FILES.get()
文件对象.name
文件对象.size
文件对象.chunks() <form 特殊的设置></form> 给用户返回数据:
HttpResponse
render(request,'index.html模板文件的路径',{'user':user})
redirect("url")
4,模板语言:
render(request,"模板文件的路径",{'obj':1234,'k1':[1,2,3,4],"k2":{'name':'张扬','age':73}) {{obj}} 1234
{{k1.3}}----4
{{k2.name}}----张扬
{% for i in k1 %}
<p> {{i}} </p>
{% endfor %} {% for k in k2.keys %}
<p> {{k}} </p>
{% endfor %} {% for v in k2.values %}
<p> {{row}} </p>
{% endfor %} {% for k,v in k2.items %}
<p> {{k}}-{{v}} </p>
{% endfor %} 5,ORM
a.创建类和字段
class User(models.Model)
uid=models.IntegerField()
name=models.CharField(max_length=12) #字符长度
python manage.py makemigrations
python manage.py migrate #settings.py中注册APP
b.操作,注意字典的操作
增:models.User.objects.create(name='Alex',age=18)
dic={'name':'xx','age':19}
models.User.objects.create(**dic) obj=models.User(name='Jack',age=18)
obj.save() 删:models.User.objects.filter(id=12).delete() 改:models.User.objects.filter(id__gt=1).update(name='Jack')
dic={'name':'xx','age':19}
models.User.objects.filter(id__gt=1).update(**dic) 查:models.User.objects.filter(uid=12)
models.User.objects.filter(uid__gt=12 大于
models.User.objects.filter(uid__lt=12) 小于
models.User.objects.filter(uid__gte=12) 大于等于
models.User.objects.filter(uid__lte=12) 小于等于 dic={'name':'xx','age':19}
models.User.objects.filter(**dic)
6,外键操作
class UserType(models.Model)
caption=models.CharField(max_length=32) #1,普通
#2,VIP用户
#3,游客 class User(models.Model)
uid=models.IntegerField()
name=models.CharField(max_length=12) #字符长度
user_type_id=models.IntergerField() #此时的数值大小没有约束
user_type=models.ForeignKey("UserType",to_field='id') #约束
name age user_type_id
#张扬 18 1
#李四 20 2