如果通过python3.6 + xadmin搭建一个超级牛逼的网站!大牛详解! ...

[复制链接]
ling332601 发表于 2017-12-30 18:02:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
xadmin安装
0 |# ^& }% j; a( `+ ?由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了。8 G0 c9 J& T; ^  }0 e- h
说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版本可以选择。; C% B8 F; X# U/ P5 A2 u4 U

: c- G9 M# K1 z6 N) G克隆一份,clone地址:xadmin,新建一个空白的README.rst代替之前的文件。% r- F7 P6 ]8 t

3 c  n. W3 O$ Z- k8 t3 N/ J+ m+ Ncmd进入dos,执行python setup.py install,出现gbk解码问题,返回上一步确定README.rst是一个空白文件。这样安装xadmin就完成了。
7 O3 p/ r' V+ z狸猫换太子
- p$ e$ B" I7 @. p算了还是叫太子换狸猫吧,admin文档太少用起来还不如自己写的后台管理,用xadmin更换django自带的admin,安装xadmin的过程与写一个app分支的过程一致。这里我简述一下步骤。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!! O3 y$ ~: |' y+ _+ T) B, b9 u. ]
第一步,创建一个文件包放置xadmin的app,并且将app注册在settings.py文件中。
! B: j; V- F* r" c( y& K9 j
7 Y; o" y4 a4 W& t* a) G# _* h5 n) _/ i* C. D' n3 w3 m
+ M; _7 V5 O2 z7 Z) A

+ S" n7 d1 U% d- B2 \0 o( C! H* ?  T5 I3 }2 C& ^& ?" p7 U
9 ?/ x7 S  s! ]! ^& j/ J' P9 s  w" S; i
后台管理的搭建非常迅速,也非常好用,django的后台管理是根据数据表的管理,所以适用于大多数情况,给我们开发带来了便利。$ Y/ C4 Q$ B8 }+ ?4 H+ {
登陆注册
8 O- q: d( I3 n# w$ S" @为了使用django后台自带的认证与登陆,所以我们的用户表最好还是继承它的用户表比较好,这样我们登录认证和session写入django都帮我们做好了,所以别人做好的东西,当然是拿来用啦。" q0 v1 X" H; w* J0 b4 u
) y4 s( j' h6 j$ k' b, N  ^# _

# H# A1 R6 n" ?所以我们需要重写user模型。
: E: v+ l( F, H4 f; s" U第一步,修改settings.py配置文件,覆盖默认的user模型:
) g7 R. ?" Z! [$ d, {AUTH_USER_MODEL = "users.UserInfo"
3 y9 E5 z& [( k7 S# X' M衍生的model是继承了AbstractUser的,所以在写的过程中不要写与父类重复的字段(尤其是登陆字段)如果写重复了会导致在哪登陆都无法登陆的情况。  |& W2 x+ I1 A
最后一步别忘了同步数据表。
3 e1 t; \, z& K' X; e这里提一个映射模板的方法,我们可以从视图函数中返回,简洁的写法可以调用TemplateView模块:- z3 q  W. @3 f( z/ w% D8 H

7 o& e& T' o: w2 V; b# }- p' F. D: |3 i
我们在模板中可以用name反向找到url,虽然as_view可以将模板直接当作视图函数,但是没办法写试图函数的逻辑处理,所以这种方式使用的并不多。* Z  u& C  }" S, F# i! P
正式需要写登陆这样有业务处理逻辑的试图函数url指向view,毕竟django是MVC的框架。
; ^5 ~% }* P* j% u+ ]! e6 w4 k关于登陆,django自己有一个后台的登陆系统,并且xadmin的登陆是它自己做的,你没有进行配置,我们登陆可以使用这个模块:
6 V) w; U0 E3 V7 y. d0 @5 T" R$ N
避免auth的login方法与我们定义的视图函数名称重复,我们导入时更换函数名。' a; ^5 ?/ R5 j  f/ n. E
如果我们想要使用账号或者邮箱都可以登录,那么我们需要自定义auth方法。django允许我们在配置文件中增加一个变量完成自定义。
2 [# t# O+ Y! ~. t) b! u首先,更改配置文件,增加自定义变量:
1 x5 u5 M0 W3 h* ^1 k- b/ b, [7 LAUTHENTICATION_BACKENDS = ('users.views.CustomBackend',)#所以我们还需要在试图函数下定义CustomBackend类然后在视图函数中重写ModelBackend的认证方法:4 D* a% o' O- L+ D
" s& Q' ]) Y9 Z' B) \5 z1 `  n
# u4 j) h( K; G3 @2 A4 w4 F! q1 S
<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">验证码自动生成库:  _: Q' T! c, U
django-simple-captcha文档:Using django-simple-captcha。" f# f! G: z4 {5 I1 P1 q
项目GitHub地址:mbi/django-simple-captcha。) B, ^8 n- o+ [
0 A( v' q3 @, j. H, j  N* I% ?
7 o4 a2 e8 B4 m, H
7 c) ]9 @% k( \: a, X; d
第三步:同步数据库。( p# ?) r! }2 k" U( q3 S% P) h

5 O9 I; Z8 \  V它在我们数据库建了一张表用来存放生成的随机码信息。2 F( F5 O, z6 q# C) F* V, g: y/ N
第四步:建立form自动认证。
( N' b0 b. }' A6 V) ^9 w* g: o% G1 Y* y% @4 k: E0 v9 r
第六步,在前端自动生成验证码。: r+ f. {1 ^1 A
8 s7 L2 ?* n$ [' ]# M
2 `- d. X9 R( f
可以说这个插件比我们之前手写的那个要好用一些。
6 Y) f! V1 r) X9 A$ j4 h( F/ a7 V( ?" ]9 e1 H0 X, `1 y
根据此判定我们的验证码是否一致。
) A8 u6 d0 x. L  q注册激活
5 K' Y. R5 W  b/ y邮箱发送验证码$ }  {- c: \( R6 Y$ n( E
建一个新的app组件utils组件的新功能就是email_send。9 T  R' A6 m& D2 u$ b) J8 o1 c
/ o2 X6 H* W* z, |/ c# r" [7 `
& O- C* M9 `, A

- ]5 w. R) g$ x5 I- a  j' k( M. e% |3 ~" W# s  C+ Z" l7 ^4 @

2 `" w2 J* B( \: X4 _拿到链接以后需要注册。
  E9 e5 c! A' Y' {- `0 j
# z4 a$ S' F8 q) I  U4 f上传图片
# ]$ Y+ j  F& Lupload地址:/ A* b: P7 r7 H! M. K
image = models.ImageField(upload_to='org/%Y/%m', verbose_name='封面图', max_length=100)配置文件中指定文件存储位置:
% _9 P' ?( k, I( U. U: h$ o% w/ g$ YMEDIA_URL = '/static/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media/')模板中配置:7 S8 Q9 b! z% u0 `
<img width="200" height="120" class="scrollLoading" data-url="{{ MEDIA_URL }}{{ org.image }}"/>为了让这里的{{ MEDIA_URL}}生效(当然你可以使用手动地址/static/media/{{org.image}}),需要配置setting文件:
) `5 j3 r* D; h# S4 w7 @0 q  |8 U3 Z: F& L8 m! w: c/ y2 U( H/ i% A

0 t) v8 f8 ?8 |3 R5 g) w3 A如有侵权请联系小编删除!
9 h% ^* J) s9 H" \: R

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

精彩评论2

sosoyoyo 发表于 2017-12-30 18:03:03 | 显示全部楼层
用Celery模块来做邮件发送任务更好[机智]
回复

使用道具 举报

yiyee123 发表于 2017-12-30 19:02:26 | 显示全部楼层
转发了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
推荐阅读更多+
阅读排行更多+
用心服务创业者
0851-88611148
周一至周五 9:00-18:00
意见反馈:admin@0851life.com

扫一扫关注我们

Powered by 童码少儿编程 X3.4© 2001-2013 0851life Inc.|网站地图