From 68729306afce57839431775253bc4a1da6ad8786 Mon Sep 17 00:00:00 2001 From: gothack329 Date: Tue, 6 Mar 2018 22:45:43 +0800 Subject: [PATCH] add password change page --- .../__pycache__/timetonow.cpython-36.pyc | Bin 827 -> 907 bytes article/templatetags/timetonow.py | 11 ++-- db.sqlite3 | Bin 368640 -> 368640 bytes userpage/__pycache__/models.cpython-36.pyc | Bin 3577 -> 3753 bytes userpage/__pycache__/urls.cpython-36.pyc | Bin 456 -> 512 bytes userpage/__pycache__/views.cpython-36.pyc | Bin 3652 -> 4204 bytes userpage/migrations/0009_profile_telegram.py | 18 ++++++ .../0009_profile_telegram.cpython-36.pyc | Bin 0 -> 593 bytes userpage/models.py | 8 +++ userpage/templates/userpage/change.html | 52 ++++++++++++++++++ userpage/templates/userpage/profile.html | 43 ++++++++++++--- userpage/urls.py | 1 + userpage/views.py | 20 ++++++- 13 files changed, 141 insertions(+), 12 deletions(-) create mode 100644 userpage/migrations/0009_profile_telegram.py create mode 100644 userpage/migrations/__pycache__/0009_profile_telegram.cpython-36.pyc create mode 100644 userpage/templates/userpage/change.html diff --git a/article/templatetags/__pycache__/timetonow.cpython-36.pyc b/article/templatetags/__pycache__/timetonow.cpython-36.pyc index 0a68eb198523c486c87ae9f5996fb7066993433b..72e21d1e86d02ff9f7af8888fb04c192d91c55d1 100644 GIT binary patch delta 234 zcmdnZ*3Hgk%*)HQYSz3cbLNR$n;5rD+-p-`Q^HomlEN&;kisI((9D>^n$1)cm%;`S z1&N3;1T&86400: - return '%d天前' % (int(s/86400)) + if int(s%86400/3600) == 0: + return '%d天前' % (int(s/86400)) + else: + return '%d天%d小时前' % (int(s/86400),s%86400/3600) elif s>3600: - return '%d小时前' % (int(s/3600)) + return '%d小时前' % (int(s/3600)) elif s>120: - return '%d分钟前' % (int(s/60)) + return '%d分钟前' % (int(s/60)) else: - return '刚刚' + return '刚刚' timetonow.is_safe = True \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index 72cf5e123f0deda061f13242e516cc55db64bca1..45d3532616e2f3b46186a5207682962a4b677695 100644 GIT binary patch delta 1509 zcmaizTWs586vzGfvq^8ZlXbLOGu9NXgAJP4j&o~AyR2!d71?P+y5OLx3vHTLE!PkPi5U?x0!0u&oqgU3u6=g=BMQ3Fm4eAEq3B9+&fJf- zA9Ul$Qy%}sSR$W`ClfSH`v!9Pk>RwQ7#L5;iDW*mur%Xsp`9(X+r~IsUA|V%ZD+g; z&AE!E+PAErqwtP>8E}Pm$G5<}Ous(j@kaQUoSi8b7a5z}8+UYe9S$af6F%7$_9&Cx ziIJ$JPQG}gFYD>-;RDY3{= zg9jy^6;&ZnIJEZeE2?PZ3#!D$0^w9B+UF7@rRh>7T}D(yMo?nL7%?TLgwvsDzbZt# zm@;iUTWPPI=6r6(HCJ1Q^K&l0wz>{%#ozwe_a)@W70t8&8c}jZ-?so3$tQ3K0LJM* zd<4e* zfu|4xxreo54}-%p&|=zkCUDK$~5H7&I10Yg&RT64w?O9VP*KDL${D|G7YD!TZ*vQcTz|P02Ks5JZS_$XkTB)8tSUD6SCY{OCjlP zZ2CIps6$K4zN3t8SN)C+q200pE4LNhRd3mZ=CVrjCZx(jY7>%WA-M^OvXIz>HRWJu z%?3PxQ-}{#{BOb7czirP=!j3o$K!d&)QCK6&t;Q%X>12ZA^vTa%&%hBI&+CV2PvfO w(K_0dRcyDV8Kn@W@{#h|U#pl`vnBCnZFd&0)O(NPgOpZW$NF?Ehu?Sn3%0nTxBvhE delta 701 zcmZoTAl7g|Y=X4lN(KgoC?F08VkQO#MxKc}#*8aBCM@A+Hf3g?%r20<*-&9B(`I(z zW@$#d$=!OJ7>y^}=^tb?-DFUcZ|>?|;vE)Q=3AI+?x&LDnB^B$oMY~iUX*T>rX3lT zRpOiD5n*haQySrsS6H5+9c1F3XzZ8hxq0*aYzHPbg~^QqYc`*GkjK2)?vWCs3&%3X zDBl)a$6WK$;w-Z&gQ9}cl)|!dlZ?##^d@UbR^Jv@$MQT=OUvYBlf2~e(o9RE43lJY zquhc-gOs%L%;NIm;?2L_urf+oDi|7D8Jk%dTk2U@7?_xvGzyEc`Zk(6PQU-2QDO7F zXKFi{jrq<`XJ5c5zg=Si<3hfP0UX=UuVXZ21d6|y&c1;$eY0Rf72oz3`xq_sHTn7( zRI#}#-Ka3JxT+%EFtwsgN`={%aq^uP3ez*+F={Cia;W6?E$1m6Zm00~-3>qz`yDebWnSNs_v;1_2h0GhauUW=y%D8>fVrFh8 zMw{vLmNHv0T1~&Xl=<@Z4-1)17~3B#XWsr`Ig6qOJMSF^UfvAG?Hm_ae(+CAU{%_# z^nm4&Jr^_I2L}Gh{PBDrfI<9-Z~F&5RsqFr8<;crn6e_L=jAbLZJ)A_Ifrp#06Qxq XFkOaCf0)bavOQn|>jwU11*`@DQ@P{d diff --git a/userpage/__pycache__/models.cpython-36.pyc b/userpage/__pycache__/models.cpython-36.pyc index 456c375e5439af828fe52bfa9372d8ed0953cc97..ea64106dcc7e9315971f826b1a7154e70e174a28 100644 GIT binary patch delta 908 zcmbu7K~EDw6vy}NPPg0LZ7EU;NSi1Tb;T-*2nkV36%442T7$3>Oxqc86>OZY;ieu; z~;UwV%;S^zj;1NzE%D9bEJzE|oua}S` zID`v?Vf8iMW11u{Qk(imP}1gR7O~e%*GPf8ZyadrD5lY|f7?2`Gh=-Om{30x`QjB^ zkVV9nF2_li_ViWK*Y@-T=}81W?G4g53AYGkHEU17wA!@$%_%ZkKcsgI2h8Txetf$p%WR4 zB9s|QJ4To$JV1Cc`LDu#a%Tw{td&vU-S&>V7&a{gotefV7t}BJL!Q2#q((`)x|}1- Z6BZDvXm+Y^$-I+IJL!%?P9~ONzX7;rt8xGU delta 765 zcmaKp&rcIk5XX16Z@b&>wiIatwp0lMTG0v-jG`zO)TjuwN=V*?w7j)$v^JSt(~B`2 zyctg~-ZbIhLE=G4!XEcMe$Z&kMDRR} z>P@V-r1QAG;D7*Orhx}ek-$gtv|@oV%$U-z#8CePnI~z6Ccy!m(BH(Iw(R4J76}XNnIZUw z1Z7Cmk4d2t(o&#I6$>B$8CT%jN+?Uk-_w8!_EFH&5LJ9C3Ei1H+ z@;0GYo!rQIc9#irFpIn>`o!mt{_YuLvDNFF7yv|HP&#lAr#Q*mO6Z z_y{nsKPQU|m&t)w2)icEv3<2?Ut@c|XJ2Rg27yYq#P%)5ZN?q#xOZVu*W7VYA%WVJ zFL0SI(fr*24>I6z15BLJU)=^Q>jAIQcatLo!7v42O)IbBF4GQI8CAXKji>mHqi-7~ zuIumK=IjGf4r5I}!Yqf4F%}t*2qg>u-mu1Mm64^pvieP`f8ZW%k1EG+W@zAs{*v0s hbMKMsg#34`G1eIyRP;f;oj&2_GH%8@=4P#|_yrD%jdlP4 diff --git a/userpage/__pycache__/urls.cpython-36.pyc b/userpage/__pycache__/urls.cpython-36.pyc index 439136fcc683d010b3316c2f21327553a93f0527..efe5a7bf3cd0ada4ddc18421fb6a4db55a3db333 100644 GIT binary patch delta 165 zcmX@X+`yu2%*)FaIA>nebVde-#|%h-6UcS|;^Lx-%JCAZ%qe`StXW(s{3-0c%;~IA z+$jRV44Q%ydz#d$1d=ln^U_n}3lfWq%kzs;^l$OQnDG!PKTV#=f{gysMchCWZ*i9v ladFB-<#?`imME?izF-DT{)w}inEf=l vCp$6vi{0WbEy^iKEGbDX$}3*UP{a>ZU&KFo4Wp9)50J^j2!zahj35XAsdW`w diff --git a/userpage/__pycache__/views.cpython-36.pyc b/userpage/__pycache__/views.cpython-36.pyc index 1925ea878d0d0945e0ea92f77b839e24eda6b5d2..4a0f0bbe3835741f37a1f44c654ef6167d45e47e 100644 GIT binary patch delta 1450 zcmZ8h&2Jk;6rWjp?e$02CP@>gZR(_TQ#pi$fC5Af;1UWHP@2X>1s|}so~gaA?KN-K zs#LiRl`DjhDgn!(C*X#-z#$jl!i7HoabqP;&>|%M11`Kbn|`Qk&2OIH*SvWj^UKkH z=St6xjipE5d|BHqF!m>V8%?j2fwqg8X10l@EpByg9oRxg$pl1g8*c z@vdsBkh>6>_sRTQ29@BBxn{1R#$@oDd77{7+leC26_G(+FH4YsUN@3Q6BHC|2Ja_t z@b%!2jgvhfpE5hBL%X4e)*)uj%&A z2ESVCd?!e!R?nP6QQ3e=(#;UfK|8JxLxVO>9~gTBzljn>s91M zIgRzNiqMo@$L*kV9po+w(K*roq!B_3WYbl?gmMgKg0akz#fO)9g*?51aBX6RPVPHR zxpH5B1f;S1a2y{c(QL0GvZW!|}wc$L;wh_X(KJMX-==vca zz{|8}qF&X_0lE_}kYVKkP|o2Z!j+(tJ-bI#gCo#KN1M1dajDM{hOEs5zhVIR9BBhr zOc=L~>wL)D@eu}uyE$T<`H3Mz+87x~Cw*&(6FA~Xr`qWu6EWiV4&%R!*2^B~?OA^6 zKyggON4(0SgM@jTU+2D!rU{W8a+i-{RUCI5R%=VQDi&W~ua033D4BP^|LE_pZ~pc3 zclW;d@!rRu-u>jOd6-8&b_OY4n|x61h92(amf!8{L5);$K$8Gd1lp^vxvsP>+cXKN zL}5(00C}R4YS3ulivTZ>aGgMxQ`gUk>POBW%YB%;-w}0;V+miGJE)|noXkk`Ja)dt zv-qnO>vi%lNpcD1M4HOgO&RbsIp> w0_+e}38>oI+ap0$h^Hsf+UR;>(2*}uKd8lE);^Y_P~ry9KW!bi;?`6D1HNlXxc~qF delta 920 zcmZ9KOHUI~6oBWJPMJQarMzOaJW3@DF##-uXc4GJszebaEbOM%-U|$LI?b7>?9>D{ zZcOy9-RsVzu3Q>_feT6Q*2Kib_y^p0&a{oyN#?s}&g-7X{2c#$F_Z1RHq!<#Z^= zvP~WuWAiC;>IJbUKtQV?qh5C1V+Xj3R1QSts8n&dFay33^72FPQ??|tMlLzqx&ZJ3 zpgb@mpBsfljzp>(@`NRMW|&jduhRW{V1?8^R!JMC#;VS~Rl6yt!dKard=#F~7tn;4 z4w7$_WCniX|AHg!V5i{;^m1uo8Z#JdH@}3p*^yt@4b-)I>!}}er3<@kRXZK+pb?W( z!9OAhWq{bXTu*@61Af^te}*Lx6&i{zo`{;)iS}Du!!THvFQeyKLB5S<7D!I+bActoZNgnb z0Aa>kvm%q~aULJSJu+?5XONe@a@TsOeZ?AZ9nZ@u+Nh&l_znBb!+nbUcj&N-I!k_v z-RdQ2)0}L+k594HP}y^As{-_s!4_egKt5d={x05FwjJK6iWP<)Zbq&qM#I4XOUxN* GBlrh2^3}-z diff --git a/userpage/migrations/0009_profile_telegram.py b/userpage/migrations/0009_profile_telegram.py new file mode 100644 index 0000000..f1e4bf0 --- /dev/null +++ b/userpage/migrations/0009_profile_telegram.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-03-06 13:59 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('userpage', '0008_auto_20180305_1717'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='telegram', + field=models.CharField(blank=True, max_length=128), + ), + ] diff --git a/userpage/migrations/__pycache__/0009_profile_telegram.cpython-36.pyc b/userpage/migrations/__pycache__/0009_profile_telegram.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a8369bf633af2342451fca48fd185b6f92a8bf24 GIT binary patch literal 593 zcmYjO&2H2%5O(Y&n*=IxqHjjb4153$snr& zU=@d~2`Yi%CITvl@n!)L#IU&LkX#GOC6H2+XD&V7R(Hu{(F}EiZnrGULs?H_FJG0b z!*aiTEmsGt1GgAVf37sTWJHZbtNn6!No|Q{bf)X>8?mi_NR3@HUgUxz&sTPJi!PjP zbgodtNzP3~I1_tt>JmA>k70d{MJ)^Gy46dUevz 物志 › {{request.user}} + + +{% endblock %} + +{% block banner %} +
+

+
+{% endblock %} + +{% block content %} +
+
{% csrf_token %} + 物志 › 修改密码 +
+{{form.as_p}} +

+ +

+
+
+ + + + {% if messages %} + {% for m in messages %} + + {% endfor %} + {% endif %} + + + +{% endblock %} \ No newline at end of file diff --git a/userpage/templates/userpage/profile.html b/userpage/templates/userpage/profile.html index d108f70..803fec4 100644 --- a/userpage/templates/userpage/profile.html +++ b/userpage/templates/userpage/profile.html @@ -142,15 +142,35 @@
-

- {% for i in points %} -
-

{{i.record_time|timetonow}},{{i.get_event_display}},{{i.point_record}}

-
- {% endfor %} + + + + + + + {% for i in points %} + + + + + + {% endfor %} +
时间记录积分
{{i.record_time}}{{i.get_event_display}}{{i.point_record}}
+
-
{# 编辑资料 #}

@@ -163,6 +183,15 @@

{{ user_form.first_name}}

{{ user_form.last_name}}

{{ user_form.email}}

+

{{ profile_form.mobile}}

+

{{ profile_form.wechat}}

+

{{ profile_form.weibo}}

+

{{ profile_form.facebook}}

+

{{ profile_form.twitter}}

+

{{ profile_form.instagram}}

+

{{ profile_form.telegram}}

+ +

修改密码

diff --git a/userpage/urls.py b/userpage/urls.py index 3ae257b..2bb34aa 100644 --- a/userpage/urls.py +++ b/userpage/urls.py @@ -7,4 +7,5 @@ path('login/', views.userlogin, name='login'), path('logout/', views.userlogout, name='logout'), path('register/', views.register, name='register'), + path('change_password/', views.password_change, name='password_change'), ] diff --git a/userpage/views.py b/userpage/views.py index 5785c23..e952251 100644 --- a/userpage/views.py +++ b/userpage/views.py @@ -12,6 +12,8 @@ from django.contrib.auth import authenticate, login from django.contrib.auth import logout from django.contrib.auth.models import User +from django.contrib.auth.forms import PasswordChangeForm +from django.contrib.auth import update_session_auth_hash # Create your views here. @@ -147,4 +149,20 @@ def register(request): obj = forms.RegisterForm() return render(request,'userpage/register.html',{'form':obj,'referer':refer}) - +@login_required +def password_change(request): + if request.method == 'POST': + form = PasswordChangeForm(user=request.user, data=request.POST) + if form.is_valid(): + form.save() + update_session_auth_hash(request, form.user) + print(dir(form)) + messages.success(request,'密码修改成功!') + else: + messages.error(request,form.errors) + print(dir(messages)) + return redirect('.') + else: + form = PasswordChangeForm(user=request.user) + return render(request,'userpage/change.html',{'form':form}) + \ No newline at end of file