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

[复制链接]
ling332601 发表于 2017-12-30 18:02:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
xadmin安装
, y% X1 Y: s8 o0 i由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了。. I: U3 Y! l% v9 u, }4 u
说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版本可以选择。
0 k1 q7 x" N3 }9 N6 {; P$ ^) c3 \
) q+ v4 d2 `) y/ Y* c: t7 u" k+ `, p克隆一份,clone地址:xadmin,新建一个空白的README.rst代替之前的文件。
& w2 J/ m2 O6 x$ e9 ~6 s; ?5 s' o0 B4 a+ ], J9 l5 L0 o$ C
cmd进入dos,执行python setup.py install,出现gbk解码问题,返回上一步确定README.rst是一个空白文件。这样安装xadmin就完成了。
) n' W- f2 [5 d- B狸猫换太子% R" [" U# ~- R2 s
算了还是叫太子换狸猫吧,admin文档太少用起来还不如自己写的后台管理,用xadmin更换django自带的admin,安装xadmin的过程与写一个app分支的过程一致。这里我简述一下步骤。小编推荐大家加一下这个群:103456743这个群里好几千人了!大家遇到啥问题都会在里面交流!而且免费分享零基础入门料资料web开发 爬虫资料一整套!是个非常好的学习交流地方!也有程序员大神给大家热心解答各种问题!很快满员了。欲进从速哦!各种PDF等你来下载!全部都是免费的哦!只为帮助大家快速入门,所以小编在群里等你们过来一起交流学习呢!
0 S  C$ o+ M$ l. R  s第一步,创建一个文件包放置xadmin的app,并且将app注册在settings.py文件中。# s$ O& f6 W& H. `

8 y4 V" p, s0 O! b' O
; n8 `2 a# X; R; [
# f" z8 T1 y7 q& W9 K# F& }8 F
0 t4 r  g0 R! A3 p4 ]$ S5 O8 L# T' W* i* D* b0 w- v$ k% P

# }" x9 o; @4 Z后台管理的搭建非常迅速,也非常好用,django的后台管理是根据数据表的管理,所以适用于大多数情况,给我们开发带来了便利。
0 J& V( Z: v  q* ?4 o登陆注册
8 s' {. M# X+ Z为了使用django后台自带的认证与登陆,所以我们的用户表最好还是继承它的用户表比较好,这样我们登录认证和session写入django都帮我们做好了,所以别人做好的东西,当然是拿来用啦。
0 ^/ P( a( P4 T$ c' i& b5 \6 ^" Y

  t+ c( @& \2 x# [$ M8 x7 B$ ?所以我们需要重写user模型。4 e) C2 ]3 n1 l5 |! @6 R) P6 M, v
第一步,修改settings.py配置文件,覆盖默认的user模型:7 O* n% D4 }7 H$ ]2 ]
AUTH_USER_MODEL = "users.UserInfo", X, P4 J/ `0 U6 j. L$ W
衍生的model是继承了AbstractUser的,所以在写的过程中不要写与父类重复的字段(尤其是登陆字段)如果写重复了会导致在哪登陆都无法登陆的情况。: b5 B, i& _- F/ q: \2 }
最后一步别忘了同步数据表。  o8 T! K( u- v: q6 L
这里提一个映射模板的方法,我们可以从视图函数中返回,简洁的写法可以调用TemplateView模块:
. F1 t) m  b' E7 q. w; F  w0 u& F6 i2 \4 u) F# T% g! \" \

6 T" N. N; v0 B# ]我们在模板中可以用name反向找到url,虽然as_view可以将模板直接当作视图函数,但是没办法写试图函数的逻辑处理,所以这种方式使用的并不多。
$ O$ g3 j9 J4 }' y# f2 e  P正式需要写登陆这样有业务处理逻辑的试图函数url指向view,毕竟django是MVC的框架。" a6 F8 ?( S( v
关于登陆,django自己有一个后台的登陆系统,并且xadmin的登陆是它自己做的,你没有进行配置,我们登陆可以使用这个模块:
3 B% U- V3 i) g7 ^7 d2 i4 ?0 ?1 b
7 s6 m, c7 h7 h' o3 T避免auth的login方法与我们定义的视图函数名称重复,我们导入时更换函数名。3 @# `( P5 s5 K7 |2 [
如果我们想要使用账号或者邮箱都可以登录,那么我们需要自定义auth方法。django允许我们在配置文件中增加一个变量完成自定义。
, z# B# \; D, |# ~首先,更改配置文件,增加自定义变量:
4 C# d  g+ W1 }/ N3 bAUTHENTICATION_BACKENDS = ('users.views.CustomBackend',)#所以我们还需要在试图函数下定义CustomBackend类然后在视图函数中重写ModelBackend的认证方法:
: S/ g3 w) I8 F7 Q% ?0 n/ ^0 `6 ?, S6 \' A8 T% ]$ a# f$ M# l
5 ~0 j) p5 g. |' s+ i$ @) j# p* w9 e
<link rel="stylesheet" type="text/css" href="{% static 'css/reset.css' %}">验证码自动生成库:
8 G# U# v/ ~4 _' T- o. `% `0 xdjango-simple-captcha文档:Using django-simple-captcha。6 U  B& S7 d! j1 _& b, J4 k
项目GitHub地址:mbi/django-simple-captcha。
) e0 @+ _  t: l0 u
  E1 @3 V& Z5 a
9 }: s" m  C" X+ x/ u8 o/ j
/ }' k: p5 l# `6 n) s- ^第三步:同步数据库。5 ^: `# h4 ~) D+ X$ |
- g: s0 r$ p6 m* i3 z% ]7 w
它在我们数据库建了一张表用来存放生成的随机码信息。/ U. |5 \' ]! u/ T5 Y6 F" M
第四步:建立form自动认证。- f9 R3 O: e/ ?9 Z" P2 C

4 q7 Q9 t8 ]. Z9 y2 I第六步,在前端自动生成验证码。
1 x" J7 H4 x9 {' ~7 R9 C
, l0 F/ E! o3 q& s; j, O# s+ J8 d" v  t( i7 `/ `- ?
可以说这个插件比我们之前手写的那个要好用一些。
7 h" H- w3 K+ C, [- Z, Y: i* X: z6 J% J" {# F- a
根据此判定我们的验证码是否一致。# h6 _8 t  y% o  A3 n9 d" ]  d
注册激活' Z- o0 l: p8 p  {' `  g0 A
邮箱发送验证码
: {. m, {, _6 _9 k9 Q建一个新的app组件utils组件的新功能就是email_send。
" d( B; `7 M9 c& B% z4 w$ o  @$ M) Y
: D) k8 y: p, y7 D% A1 H

6 l. w$ p+ E8 x, Z$ g5 \- q3 {+ I. G) j1 O
4 A9 S) c& u/ t/ l* L, T
拿到链接以后需要注册。
: R& Z' c" S# d$ m9 h# j, D7 A5 U. G9 N. e/ Y9 q
上传图片! ^4 ?' w3 k( x6 s/ q$ ^! `$ C
upload地址:
9 g2 O+ d4 g/ t% X5 @: a7 O  a; vimage = models.ImageField(upload_to='org/%Y/%m', verbose_name='封面图', max_length=100)配置文件中指定文件存储位置:
) d6 ]# D! X5 {MEDIA_URL = '/static/media/'MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media/')模板中配置:; k7 R7 B" @! T8 |' G) o
<img width="200" height="120" class="scrollLoading" data-url="{{ MEDIA_URL }}{{ org.image }}"/>为了让这里的{{ MEDIA_URL}}生效(当然你可以使用手动地址/static/media/{{org.image}}),需要配置setting文件:8 u0 K, F% y1 |

4 G" X5 Y8 C8 |8 D4 y6 i! u7 C( d3 ~0 G0 S* r. r" V7 H+ M5 y( m* |6 M- W
如有侵权请联系小编删除!) Z$ P- ~  k" `3 n( w  j

本帖子中包含更多资源

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

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