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

[复制链接]
ling332601 发表于 2017-12-30 18:02:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
xadmin安装5 ?% j) ~9 f: X1 Q8 A+ @
由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了。
. k2 {5 [4 }# f6 v0 Y4 ^说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版本可以选择。
- B# c9 j2 z4 I8 e
( l( d* D$ V& f+ y& g% x9 N" a克隆一份,clone地址:xadmin,新建一个空白的README.rst代替之前的文件。
' x& F+ H6 y  {& Q7 V. Q
5 M; v7 ~. K5 xcmd进入dos,执行python setup.py install,出现gbk解码问题,返回上一步确定README.rst是一个空白文件。这样安装xadmin就完成了。
7 ^; ~  C, e& P! ]5 D% X狸猫换太子$ q2 }9 g" f) z, r) g! v$ ^" ?8 P- m
算了还是叫太子换狸猫吧,admin文档太少用起来还不如自己写的后台管理,用xadmin更换django自带的admin,安装xadmin的过程与写一个app分支的过程一致。这里我简述一下步骤。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
+ X3 r  b, L+ u5 a8 v. _第一步,创建一个文件包放置xadmin的app,并且将app注册在settings.py文件中。
0 E. S/ j1 C' U- W9 v1 C0 x# K
* d7 u8 D8 ]7 P
. s  D; Z+ A. P- _' o$ |" L0 d7 V! n
6 {( i6 N: i* o+ y$ O7 X" u
9 H5 S% \2 G9 J% r3 K, O* A
# V$ s2 ~; M2 ?
后台管理的搭建非常迅速,也非常好用,django的后台管理是根据数据表的管理,所以适用于大多数情况,给我们开发带来了便利。
$ I4 }. G: f8 w' O" [3 m登陆注册
$ m/ Z! H2 x8 ~' x4 ?为了使用django后台自带的认证与登陆,所以我们的用户表最好还是继承它的用户表比较好,这样我们登录认证和session写入django都帮我们做好了,所以别人做好的东西,当然是拿来用啦。
# {2 v3 a/ A7 Q" d
: E$ q: H: q4 I" B2 d3 E
% G+ t; u5 v! }& l% j, p所以我们需要重写user模型。
$ f3 _" Z4 I# N% ^* B7 W4 c. |1 Z9 V第一步,修改settings.py配置文件,覆盖默认的user模型:
9 ~3 h( G9 n% @$ o9 CAUTH_USER_MODEL = "users.UserInfo"
! N; |8 C' X' {, C" ~( F9 G  W3 N衍生的model是继承了AbstractUser的,所以在写的过程中不要写与父类重复的字段(尤其是登陆字段)如果写重复了会导致在哪登陆都无法登陆的情况。% u' ~* n4 _/ C& u" S5 y* t# z3 B
最后一步别忘了同步数据表。) S+ X8 a/ ]5 p
这里提一个映射模板的方法,我们可以从视图函数中返回,简洁的写法可以调用TemplateView模块:
  Z( w2 m. p) f% k2 k- o! S
  R  A! o' b7 Y% h+ Z0 R' f$ U- |" x  d0 s- B1 k
我们在模板中可以用name反向找到url,虽然as_view可以将模板直接当作视图函数,但是没办法写试图函数的逻辑处理,所以这种方式使用的并不多。9 d' j% p( {) h: B; M9 e! ^
正式需要写登陆这样有业务处理逻辑的试图函数url指向view,毕竟django是MVC的框架。
! d' G9 F4 T6 J9 R$ N3 }% ]) R关于登陆,django自己有一个后台的登陆系统,并且xadmin的登陆是它自己做的,你没有进行配置,我们登陆可以使用这个模块:& Z0 V- F9 ^+ D) ~

9 |, @5 p8 v4 s9 `# Y避免auth的login方法与我们定义的视图函数名称重复,我们导入时更换函数名。  _8 Q2 _6 p+ J" ~1 F( [! y
如果我们想要使用账号或者邮箱都可以登录,那么我们需要自定义auth方法。django允许我们在配置文件中增加一个变量完成自定义。
6 l4 s. y# T6 B7 ]/ S首先,更改配置文件,增加自定义变量:) g6 Y2 Z/ ^, t: P2 N6 r) _
AUTHENTICATION_BACKENDS = ('users.views.CustomBackend',)#所以我们还需要在试图函数下定义CustomBackend类然后在视图函数中重写ModelBackend的认证方法:
, ]* L3 Y+ V$ ]6 R) j# O/ R) M
7 I; `& ]' P. o+ i% N
' [: H; c# H$ H$ L) s0 Y$ |<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">验证码自动生成库:
, V' {+ P4 x/ V  k( `! Wdjango-simple-captcha文档:Using django-simple-captcha。2 y) |' i" Z  m% a1 @5 d, `
项目GitHub地址:mbi/django-simple-captcha。# d2 e3 ^+ H* ~- P$ v9 W
$ z9 X4 J7 e1 T3 O1 f# j

6 z. ?/ V: _( s2 q! g) j, Z* [
5 t. E4 j1 C  ?" p, [  G3 D% `3 O第三步:同步数据库。
8 q8 S$ f! t2 M, T" c) K, |% f
+ B. V+ B( j# T! y+ d0 a9 `8 M  r它在我们数据库建了一张表用来存放生成的随机码信息。4 v( r, T) m0 S6 E7 L. k
第四步:建立form自动认证。7 }. J) e$ Y! d7 ?

. ]* v5 a: ?4 ]' O第六步,在前端自动生成验证码。
4 d3 f" y- Y' _" ^% p& ]. t: z7 I( `# W. }% e6 T$ K

" ^( i: v/ h- a7 I4 p可以说这个插件比我们之前手写的那个要好用一些。
, Q& c" k) W, s, h
5 ~$ D# m2 U" o7 V9 O. c根据此判定我们的验证码是否一致。
1 V% w0 B9 q7 g% G$ {注册激活1 M; i+ a( P( F6 A! t; u- l
邮箱发送验证码
, B! {" J5 S) D& ^4 \建一个新的app组件utils组件的新功能就是email_send。
0 u+ b. d. f' W$ F6 w, d% x# G0 j4 t& C# Z( U8 K+ ~

* R9 w1 h+ o% h! `7 Z8 T
, e7 s0 z, ~/ Q# ]  R3 d- E7 g7 F/ q! N5 z8 i

1 `* Z( I  a7 F! h9 k% f% _拿到链接以后需要注册。
1 O% |. Y1 w: O9 S7 M
( |8 j8 o6 _3 j$ i3 r# L( W上传图片& u6 C- p7 |& _
upload地址:
/ J. z4 t: f( _" _: x: V) F' {image = models.ImageField(upload_to='org/%Y/%m', verbose_name='封面图', max_length=100)配置文件中指定文件存储位置:
2 v6 R3 b% i5 _  NMEDIA_URL = '/static/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media/')模板中配置:: i3 u+ b* ]- N" O, `
<img width="200" height="120" class="scrollLoading" data-url="{{ MEDIA_URL }}{{ org.image }}"/>为了让这里的{{ MEDIA_URL}}生效(当然你可以使用手动地址/static/media/{{org.image}}),需要配置setting文件:
! H; o0 ~: W0 N- x
' @1 _% e  {( u$ W) d
# k3 T! C2 n( \% S6 N( f+ g( }如有侵权请联系小编删除!
+ v5 u, v3 ]+ N* q

本帖子中包含更多资源

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

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.|网站地图