Django study notes (4)

1. Request cycle

url > routing > function or class > return string or template language?

Form form submission:
submit -> url > method in function or class
- ....
HttpResponse('....')
render(request, 'index.html')
redirect('/index/')
user < < Return string
(when redirect is received) automatically initiate another request
--> url .....

Ajax:
$.ajax({
url: '/index/',
data: {'k': 'v', 'list': [1,2,3,4], 'k3': JSON.stringfy({'k1': 'v'}))}, $(form object).serilize()
type: 'POST',
dataType: 'JSON':
traditional: true,
success: function(d){
location.reload() # refresh
location.href = "a certain address" # jump
}
})
submit -> url ->


<h1>{{ name }}</h1> -->
<h1>v1</h1>

XXXXXXX redirect...
user<<<<< string


2, routing system URL
a. /index/ -> function or class
b. /index/(\d+) -> function or class
c. /index/(?P<nid>\d+) -> function or class
d. /index/(?P<nid>\d+) name= 'root' -> function or class
reverse()
{% url 'root' 1%}
e. /crm/ include('app01.urls') -> route distribution

f. default
url(r'^index/', views.index, {'name': 'root'}),

def index(request,name):
print(name)
return HttpResponse('OK') g.namespace/admin/ include('app01.urls',

namespace

='m1')
/crm/ include('app01.urls',namespace='m1')

app01.urls
/index/ name = 'n1'


reverser('m1:n1')

3、
def func(request):
request.POST
request.GET
request.FILES
request.getlist
request.method
request.path_info

return render,HttpResponse,redirect

4、
render(request, 'index.html')
# for
# if
# 索引. keys values items all

5、
class User(models.Model):
username = models.CharField(max_length=32)
email = models.EmailField()

有验证功能
Django Admin
无验证功能:
User.objects.create(username='root',email='asdfasdfasdfasdf')
User.objects.filter(id=1).update(email='666')



class UserType(models.Model):
name = models.CharField(max_length=32)


class User(models.Model):
username = models.CharField(max_length=32)
email = models.EmailField()
user_type = models.ForeignKey("UserType")

user_list = User.objects.all()
for obj user_list:
obj.username,obj.email,obj.user_type_id,obj.user_type.name,obj.user_type.id

user = User.objects.get(id=1)
user.

User.objects.all().values("username","user_type__name",)



class UserType(models.Model):
name = models.CharField(max_length=32)


class User(models.Model):
username = models.CharField(max_length=32)
email = models.EmailField()
user_type = models.ForeignKey("UserType")
m = models.ManyToMany('UserGroup')


class UserGroup(models.Model):
name = ....


obj = User.objects.get(id=1)
obj.m.add(2)
obj.m.add(2,3)
obj.m.add( *[1,2,3])

obj.m.remove(...)

obj.m.clear()


obj.m.set([1,2,3,4,5])

# Multiple groups, UserGroup Object
obj.m.all()
obj.m.filter(name='CTO')



Knowledge points:
URL
- Two
Views
- Additional information requested
from django.core.handlers.wsgi import WSGIRequest
request.environ
request.environ[ 'HTTP_USER_AGENT']
- decorator
FBV:
def auth(func):
def inner(reqeust,*args,**kwargs):
v = reqeust.COOKIES.get('username111')
if not v:
return redirect('/login /')
return func(reqeust, *args,**kwargs)
return inner

CBV:
from django import views
from django.utils.decorators import method_decorator

@method_decorator(auth,name='dispatch')
class Order(views.View):

# @method_decorator(auth)
# def dispatch(self, request, *args, **kwargs):
# return super(Order,self).dispatch(request, *args, **kwargs)

# @method_decorator(auth) #When using CBV, you need to pass auth as a parameter into django's decorator class
def get(self,reqeust):
v = reqeust.COOKIES.get('username111')
return render(reqeust,' index.html',{'current_user': v})

def post(self,reqeust):
v = reqeust.COOKIES.get('username111')
return render(reqeust,'index.html',{'current_user': v})
Templates
- master...html
extends
include
- Custom function
simple_tag
a. Create templatetags directory under app
b. Any xxoo.py file
c. Create template object register
d.
@register.simple_tag
def func(a1,a2,a3....)
return "asdfasd"
e.settings Register APP in APP
f. Top {% load xxoo %}
g. {% function name arg1 arg2 %}
Disadvantage:
cannot be used as an if condition
Advantage:
Arbitrary parameter
filter
a. Create templatetags directory under app
b. Any xxoo.py file
c. Create template object register
d.
@register.filter
def func(a1,a2)
return "asdfasd"
e. register APP in settings
f. top {% load xxoo %}
g. {{ parameter 1 | function name: "parameter two, parameter three" }} {{ parameter 1|Function name: number}}
Disadvantages:
Up to two parameters, no spaces are allowed
Advantages:
Can be used as an if condition

Pagination (custom pagination)

XSS:
{{ page_str|safe }}

mark_safe(page_str)

cookie
on the client browser A file of
{"user": 'dachengzi'}

session : Decorator


Models
- a large wave of operations

Form validation
-
cache
middleware
signal
CSRF
Admin/ModelForm

job:
host management:
1, single table operation
2, one-to-many
3, many To many
requirements:
a. Delete dialog
b. Modify, add new URL
c. User authentication based on cookie
d. Customized display number
e. Paging
Preview:
Form: http://www.cnblogs.com/wupeiqi/articles/6144178.html
Model: http://www.cnblogs.com/wupeiqi/articles/6216618.html


Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325692805&siteId=291194637