AUTH_USER_MODEL = 'APP.UserInfo'
#Django允许你通过修改setting.py文件中的 AUTH_USER_MODEL 设置覆盖默认的User模型,其值引用一个自定义的模型。
MySQL 数据库 的 setting配置


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'bms',           # 要连接的数据库,连接前需要创建好
        'USER':'root',        # 连接数据库的用户名
        'PASSWORD':'',        # 连接数据库的密码
        'HOST':'127.0.0.1',       # 连接主机,默认本级
        'PORT':3306            #  端口 默认3306
    }
}

  















LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level': 'DEBUG', }, } }






     还有一种查看sql语句的方式


django 中的setting 各种配置logging   MySQL
from app01 import models

def add_book(request):
    '''
    添加表记录
    :param request: http请求信息
    :return:
    '''
    book_obj = models.Book(title='python',price=123,pub_date='2012-12-12',publish='人民出版社')
    book_obj.save()
    from django.db import connection  #通过这种方式也能查看执行的sql语句
    print(connection.queries)
    return HttpResponse('ok')
 

 

 

django下载安装

pip install django==1.11.9

配置环境变量:scripts那个路径配置到环境变量里面

创建项目

cmd : django-admin startproject 项目名称(mydjango)

cd mydjango

创建app: django-admin startapp 应用名(app01) python manage.py startapp 应用名

启动项目:python manage.py runserver 127.0.0.1:8001

注册app,settings配置文件中:

INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'app01.apps.App01Config',
   # 'app02.apps.App02Config',
   'app02',
]

pycharm创建启动项目(...)

第一步:

urls.py里面:

urlpatterns = [
   # url(r'^admin/', admin.site.urls),
   url(r'^index/', views.index),

]

第二步:

views.py视图函数,写咱的逻辑

def index(request):
   return HttpResponse('app01')  

 

第三步:

templates 文件夹里面创建一个html文件 :index.html

def index(request):
return render(request,'index.html',{'name':'chao'})
index.html
{{ name }}

 

返回内容的方法:

Httpresponse('xx') 返回文本字符串
render(request,'index.html',{'name':'chao'}) 返回模板文件的,html

 

url高级用法

url(r'^index/(?P<year>\d+)/(\d+)/', views.index,{'foo':'xxxxx'})  
有名分组:

include分发
在应用文件夹里面创建一个自己的urls路由文件
在总的路由文件里面写上下面的内容:
url(r'^app01/',include('app01.urls'))

 

  频率组件  注意4: 如果想打印orm转换过程中的sql,需要在settings中进行如下配置:(学了增加记录的语句在过来配置吧)

复制代码
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}  

 

 

from rest_framework.throttling import BaseThrottle,SimpleRateThrottle
import time
from rest_framework import exceptions
visit_record = {}
class VisitThrottle(BaseThrottle):
    # 限制访问时间
    VISIT_TIME = 10
    VISIT_COUNT = 3

    # 定义方法 方法名和参数不能变
    def allow_request(self, request, view):
        # 获取登录主机的id
        id = request.META.get('REMOTE_ADDR')
        self.now = time.time()

        if id not in visit_record:
            visit_record[id] = []

        self.history = visit_record[id]
        # 限制访问时间
        while self.history and self.now - self.history[-1] > self.VISIT_TIME:
            self.history.pop()
        # 此时 history中只保存了最近10秒钟的访问记录
        if len(self.history) >= self.VISIT_COUNT:
            return False
        else:
            self.history.insert(0, self.now)
            return True

    def wait(self):
        return self.history[-1] + self.VISIT_TIME - self.now
复制代码
 

在views.py中:

from app01.service.throttles import *

class BookViewSet(generics.ListCreateAPIView):
    throttle_classes = [VisitThrottle,]
    queryset = Book.objects.all()
    serializer_class = BookSerializers
全局视图throttle

REST_FRAMEWORK={
    "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],
    "DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",],
    "DEFAULT_THROTTLE_CLASSES":["app01.service.throttles.VisitThrottle",]
}
 

内置throttle类

在throttles.py修改为: 

class VisitThrottle(SimpleRateThrottle):

    scope="visit_rate"
    def get_cache_key(self, request, view):

        return self.get_ident(request)
  settings.py设置:

复制代码
REST_FRAMEWORK={
    "DEFAULT_AUTHENTICATION_CLASSES":["app01.service.auth.Authentication",],
    "DEFAULT_PERMISSION_CLASSES":["app01.service.permissions.SVIPPermission",],
    "DEFAULT_THROTTLE_CLASSES":["app01.service.throttles.VisitThrottle",],
    "DEFAULT_THROTTLE_RATES":{
        "visit_rate":"5/m",
    }
}
复制代码

 

 

django 项目更改ip  pycharm 中绿色开始按钮左侧下拉框  打开  edit configuratios   更改配置