慕课网
强力Django和杀手级xadmin学习笔记
2018年6月
3-2
3-3
- 指定主键
primary_key = True
3-5
- 在url中指定别名
url(r'^form/$',getform,name = 'go_form'
在 template中{% url 'go_form' %}
4-3
- 继承django的user表
from django.contril.auth.models import AbstractUser class UserProfile(AbstractUser): ___
4-8
- app加入到搜索路径内
在setting中
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
5-2
- xadmin 的安装
- pip install xadmin
- 源码安装,在[github]上下载,将xadmin拷贝到项目目录中,在url中配置
在配置中遇到很多报错,是因为django从1.x迁移到2.x的错误,可参考https://blog.csdn.net/qq_34619992/article/details/79809432
5-5
- 后台数据库显示中文
在app的apps.py 中:
class 中添加verbose_name = "中文名称"
然后在该app的__init__.py 中添加:
default_app_config = "database.apps.DatabaseConfig"
其中 DatabaseConfig 为 apps.py 中的class名,database为app名
6-7
- 注册或登录图片验证码功能
- django-simple-captcha(github上搜索)
7-3/7-4
- 上传文件地址设置
在model里有imgField字段,上传路径在哪设置呢
在setting中添加:
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,"media")
- 要在template中使用media,如
url ="{{ MEDIA_URL }}{{ app.img }}"
需要在setting的template中添加:
django.core.context_processors.media
还要在url中做配置:
from django.views.static import serve
from MxOnline.setting import MEDIA_ROOT
url(r'^media/(?P<path>.*)$',serve,{"document_root":MEDIA_ROOT})
7-5
- 分页开发库 django -pure -pagination(github搜索)
7-7
- 当前台的一个表和后端数据库一个表的属性很相似时,可以直接将class表,转换为前台的form
from django import forms
class AnotherUserForm(forms.ModelForm):
class Meta:
model = UserAsk # 自己的class表
field = ['name','mobile','course_name'] # 自定义字段
然后在view中直接调用save(commit=True)即可更新到数据库,非常省事,具体参见7-7和10-4的末尾部分视频
7-8
- 异步请求,返回Json Ajax刷新
return HttpResponse("{a:b}",content_type = "application/json")
7-9
- 数据库反向取数据
外键 A = models.ForeignKey(B)
可以通过 B.A_set 类似形式,反向取到指向B的A的所有数据。
B.A_set.all()
取出全部
8-1
- 如果一个字段是choice类型
则在html页面中用get_choice_dispaly 显示
例如:
A = model.CharField(choices = (("cj","初级"),("gj","高级")))
{{ classname.get_A_dispaly }}
10-1
- 在html中
request.path
可以提取到当前页面的路径,相对路径,可以根据路径对某些按钮或标签做出相应状态。
{{% if request.path | slice:'7' == '/course' %}}
做出判断
10-2
- 在view中,查询数据库,或的功能,比如筛选出name=name的或者email=email的,用到或的功能
import django.db.models import Q
all_courses = all_courses.filter(Q(name==name) | Q(email = email) )
11-1
- 登出功能
class LogoutView(View):
def get(self,request):
logout(request) # django自带函数
from django.core.urlresolvers import reverse
return HttpResponseRedirect(reverse("index")) # 反解出网址