diary of django
1、安装django -> pip install django
----- 某些时候竟然需要FQ
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()装饰器函数做了以下事情:
- 如果当前用户没有登陆,跳转到settings.LOGIN_URL,并传递当前的绝对路径到URL请求参数中,例如:/accounts/login/?next=/polls/3/
- 如果当前用户已经登陆了,执行view方法。在view中的方法可以认为当前用户已经登陆了。
login_required方法接受两个参数:
- redirect_field_name:默认值是next。用来定义登陆成功之后的跳回之前访问界面的url。
- 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:\wamp\www\djangoprojects\chatbot\static'
python manage.py collectstatic,这样django会自动的把样式复制到你刚建立的目录里
10、 修改运行 端口号: python manager.py runserver 8001