diary of django

1、安装django -> pip install django 

 ----- 某些时候竟然需要翻墙

2、JsonResponse 需要    (不需要了,django.http自带

 pip install django-json-response

2、安装mysql模块 (python 3)

pip install mysqlclient     最近装了一次,竟然一直不成功。 555 ~ pip install mysqlclient==1.3.10  这样却是成功的。

3、利用 django 的 auth模块实现登录,登出

from django.contrib.auth import authenticate,login,logout


def login_ses(request):
    username = request.GET.get('username')
    password = request.GET.get('password')

    # 一般方法
    # ls = User.objects.filter(username=username)
    # if ls.exists():
    #     request.session['isLogin'] = True
    #     request.session['username'] = username
    # else:
    #     return JsonResponse({'code':-1})
    user = authenticate(username=username,password=password)
    if user is not None:
        login(request, user)
    else:
        return JsonResponse({'code': -1})
    return JsonResponse({'code':0,'msg':'ok'})

def login_out(request):
    # request.session['isLogin'] = False
    # request.session['username'] = None
    logout(request)
    return JsonResponse({'code':0})

def saveUser(request):
    print('-'*222)
    print(request.user.is_authenticated)
    if __is_login(request):
        return JsonResponse({'code':-1,'msg':'isLogined'})

    # return JsonResponse({'code':-1})
    dic = json.loads(request.body)
    username = dic.get('username')
    password = dic.get('password')

    if not all([username,password]):
        return JsonResponse({'code':-1})
    try:
        User.objects.create_user(username=username,password=password)
    except Exception as e:
        return JsonResponse({'code':-1})

    return JsonResponse({'code':0})

def __is_login(request):
    # return request.session.get('isLogin',False)
    return request.user.is_authenticated

 4、登录验证装饰器(decorator)使用:

  django.contrib.auth.decorators.login_required([redirect_field_name=REDIRECT_FIELD_NAME,login_url=None])

  login_required()装饰器函数做了以下事情:

  1. 如果当前用户没有登陆,跳转到settings.LOGIN_URL,并传递当前的绝对路径到URL请求参数中,例如:/accounts/login/?next=/polls/3/
  2. 如果当前用户已经登陆了,执行view方法。在view中的方法可以认为当前用户已经登陆了。

   login_required方法接受两个参数:

  1. redirect_field_name:默认值是next。用来定义登陆成功之后的跳回之前访问界面的url。
  2. login_url:默认值是settings.LOGIN_URL。用来指定登陆界面的url。如果不传入改参数,就需要确保settings.LOGIN_URL的值是正确设置的。

  

from django.contrib.auth.decorators import login_required
 
# 没有参数的情况
@login_required
def my_view(request):
    ...


# 有参数的情况 
@login_required(redirect_field_name='my_redirect_field')
def my_view(request):
    ...

@login_required(login_url='/accounts/login/')
def my_view(request):
    ...

 5、创建超级管理员:python manage.py createsuperuser  , 然后修改app的 admin.py 将model加入管理 如下图所示:

  

       然后:输入 localhost:8000/admin 登录

6、时间处理之arrow:

  

#格式化要加 时区哦
arrow.now().to('Asia/Shanghai').format("YYYY-MM-DD HH:mm:ss")

# 转换成timestamp

t = arrow.utcnow()

t.timestamp   # 1485937837

# 从字符串转换成Arrow对象
arrow.get("2017-01-20 11:30", "YYYY-MM-DD HH:mm")

# 从时间戳转化为Arrow对象
arrow.get(1485937858.659424)

# 直接生成Arrow对象
arrow.get(2017, 2, 1)

# 时间推移

t = arrow.now()
t.shift(days=-1)  # 前一天
t.shift(weeks=-1)  # 前一周
t.shift(months=-2) # 前两个月
t.shift(years=1)  # 明年

 7、mysql存入中文存不进去的情况:  ②有效

     ① 修改数据表编码为utf8:  alter table employees character set utf8

  ② 修改数据表中所有字段编码为utf8:   alter table `tablename` convert to character set utf8; 

       ③  修改数据库编码为utf8:  alter database enterprises character set utf8

  8、  遇到接口访问不到的情况  请

  

   9、   管理员页面无样式

  STATIC_ROOT = 'D:wampwwwdjangoprojectschatbotstatic' 
       python manage.py collectstatic,这样django会自动的把样式复制到你刚建立的目录里

    10、 修改运行 端口号: python manager.py runserver 8001

原文地址:https://www.cnblogs.com/Mvloveyouforever/p/8544252.html