From 301caaa316f9123ee54c164d73216aa6b6b795f9 Mon Sep 17 00:00:00 2001 From: hghimanshu Date: Mon, 30 Nov 2020 11:55:20 +0530 Subject: [PATCH] two new blogs of himanshu --- source/_posts/django-custom-user-model.md | 91 ++++++++++++++++++ .../custom-user-model-logo.png | Bin 0 -> 67233 bytes .../_posts/reducing-the-docker-image-sizes.md | 64 ++++++++++++ .../docker.png | Bin 0 -> 13633 bytes 4 files changed, 155 insertions(+) create mode 100644 source/_posts/django-custom-user-model.md create mode 100644 source/_posts/django-custom-user-model/custom-user-model-logo.png create mode 100644 source/_posts/reducing-the-docker-image-sizes.md create mode 100644 source/_posts/reducing-the-docker-image-sizes/docker.png diff --git a/source/_posts/django-custom-user-model.md b/source/_posts/django-custom-user-model.md new file mode 100644 index 00000000..96fa0427 --- /dev/null +++ b/source/_posts/django-custom-user-model.md @@ -0,0 +1,91 @@ +--- +title: Django Custom User Model +date: 2020-11-30 11:29:00 +author: Himanshu Garg +tags: + - user-model + - custom-user-model + - python + - django + - django-admin +categories: ['python'] + +--- +![Django Custom User Model](/blog/python/django-custom-user-model/custom-user-model-logo.png) + + +“How do I replace the **username** field with the **email** field or add other fields while for registering a new user? ” + +Did this question came to your mind before creating any application with django? If yes, then this post is for you. + +In this post, I will show you guys how to create custom user model in django. + +As we all know the default **User** model in django uses a username to uniquely identify a user during authentication. If you need to replace this username field with other field lets say an email field then you need to create a custom user model by either subclassing **AbstractUser** or **AbstractBaseUser**. + +So what are these ? + +**AbstractUser :-** if you only want to remove the username field and don’t have any problem with other fields + +**AbstractBaseUser :-** if you want to start all from scratch by creating your complete new user model + +## **Code** + +I am assuming you already have created a django-project. So create a new app *users.* + + python manage.py startapp users + +Lets create a users/managers.py file + +![](https://cdn-images-1.medium.com/max/2616/1*7PgkURTjGBX6DFrdEK7G-A.png) + +Now create a users/models.py file + +![](https://cdn-images-1.medium.com/max/2580/1*nkmzZxdSvBUGHIJ3eSGYLA.png) + +Here we firstly created our custom manager by subclassing **BaseUserManager**, that uses email for unique identifies rather than username + +Also for the models.py file, we firstly subclass **AbstractUser**. Here, we specify email as **USERNAME_FIELD**. Along wih these we also added a new field to store the **Full Name** of the user. + +Lets create the users/forms.py file + +![](https://cdn-images-1.medium.com/max/2984/1*B-cTrFmAhIGBichsHYvC9w.png) + +Here in forms.py we have created a basic validation method so that while creating the user, both the passwords are same + +users/views.py + +![](https://cdn-images-1.medium.com/max/2548/1*F0HjR9GvkLuWEUM04qE1EA.png) + +It imports our custom user model and saves the fields to the model + +Before running the code, lets change our project settings.py file + +![](https://cdn-images-1.medium.com/max/2000/1*BhVktNIey9hvH0Mj56Jvsw.png) + +Here, in settings.py file we firstly added our newly created app. Then we define a **AUTH_USER_MODEL** as we have created our custom model. + +Lets migrate our model + + python manage.py makemigration + python manage.py migrate + python manage.py runserver + +You can check the urls and other template files from my github repo + +**Output** + +![sample form values](https://cdn-images-1.medium.com/max/3188/1*HXD8q2zpp7RX9BdLJyGUPg.png) + +In django-admin + +![Some users which I have created](https://cdn-images-1.medium.com/max/2000/1*18_3VxHJn1ryipLC6LMHsA.png) + +![](https://cdn-images-1.medium.com/max/2000/1*CcoigQy7gvG-qiiUnO00Yg.png) + +## **Conclusion** + +In this post, we looked at how to create a custom django user model. You can find the final code [here](https://github.com/hghimanshu/Blog/tree/master/custom). + +**Some good reads you may like :)** + +1. [Django vs Flask which framework to choose](https://nayan.co/blog/python/django-vs-flask-which-framework-to-choose/) \ No newline at end of file diff --git a/source/_posts/django-custom-user-model/custom-user-model-logo.png b/source/_posts/django-custom-user-model/custom-user-model-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6f1a3f1f34e83849d9a57f42b79860e85eadf9 GIT binary patch literal 67233 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 literal 0 HcmV?d00001 diff --git a/source/_posts/reducing-the-docker-image-sizes.md b/source/_posts/reducing-the-docker-image-sizes.md new file mode 100644 index 00000000..b6979546 --- /dev/null +++ b/source/_posts/reducing-the-docker-image-sizes.md @@ -0,0 +1,64 @@ +--- +title: Reducing the docker image sizes +date: 2020-11-30 11:29:00 +author: Himanshu Garg +tags: + - docker + - lightweight images + - python + - docker-images + - alpine +categories: ['python'] + +--- +![](/blog/python/reducing-the-docker-image-sizes/docker.png) + +While building any docker image, do we get an idea about the size of that image and can we optimize their size? + +Well in this post I will tell you how can you optimize the size of your very heavy docker images. + +## **Lets gets started!!** + +Before beginning I’ll recommend you to go through my previous blog in which I had show you how to create docker images. In this post I’ll use that docker image and try to optimize it as much I can. + +![](https://cdn-images-1.medium.com/max/2000/1*5mnlDgrO84nUwzGDKMgQrw.png) + +Here, the image shown as **docker_containerized_cifar** was the one which we created in the post. Also, as the image shows you, this images is of **3.79GB**. That’s very heavy image. Lets us try to optimize and see how much can we reduce in this image + +Before going anything further, lets see sizes of layers in this image + + docker history docker_containerized_cifar + +![](https://cdn-images-1.medium.com/max/2178/1*ey_DuT_XlfHGUQtgTFQAdQ.png) + +Here, the size of each layer is shown. Lets try to improve this + +I have create another dockerfile. Here I have reduce the RUN command as every RUN adds a new layer hence increase the size of the image. + +So, I have build a new image + +![](https://cdn-images-1.medium.com/max/2000/1*rGzaepne58vjXrddBmM0Nw.png) + +Lets check its size and compare it with the previous image + +![](https://cdn-images-1.medium.com/max/2000/1*wiPQ4V707I7A7Lo9NOLqkw.png) + +Here, as you can see the new image **lightcifar_1** is of around **3GB** which is quite less than the original image. So, we have reduced around **0.79GB** of size and that too in one go 🙌. Lets try one more time and try to reduce this by using a small base image and see. + +![](https://cdn-images-1.medium.com/max/2000/1*1LFPYX_HBmVAC0QyUy6ZEA.png) + +Lets check its size and compare it with the previous images + +![](https://cdn-images-1.medium.com/max/2000/1*NAmm6pqnIM2_35R5DrmtlQ.png) + +This new image name is **lightcifar_2**. Here we have take lighter base image and wow our image size is reduced to **2.48GB** from **3.79GB**. That’s around 34% lighter from the original image. Lets see its size of the layers + +![](https://cdn-images-1.medium.com/max/2298/1*ZHNBLTV9UCcJhWap4IzAvA.png) + +## **Conclusion** + +So, with this post we learn how to reduce the size of the heavy docker images. If you need any code helps then you can find the code from [here](https://github.com/hghimanshu/Blog/tree/master/CIFARDocker). If you also have some other way to reduce this size then please let me know. + +**Some good reads you may like :)** + +1. [Creating a very basic deep-learning model in Docker](https://nayan.co/blog//AI/Creating-deep-learning-models-in-Docker/) \ No newline at end of file diff --git a/source/_posts/reducing-the-docker-image-sizes/docker.png b/source/_posts/reducing-the-docker-image-sizes/docker.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d66def1bd8a06663b0778f001210c843474b73 GIT binary patch literal 13633 zcmeHtX;f3^xAy_6*ecL!l`>m}q<=+FMww}?0uqQVGRPFF2*{`mA~Vz?bzn+lCIq#j z3;|>mWKu+WWEKN5i$+En3`@BMba-gm9L%m+9t=bUHnXYb$s?cvGwQ94;d$krbaM0jo6R`}++)W)|6qPflN*Pl;c8JrslDgE#vVvN(}6h@kg zpLg@h75eepU!Ekn{^(_K7JX!8sh@wHa$}cmOO&EzhXSRY@H++lDW%}_`K4QPj~?vP zOLo<};nQN@b2bTyvCE|TW{yrpjLkP>pXaY>UOg2oA~76R#SOI{sqHWjTWwv<37gGX zGVEGf9^rA^)IlBiY*~;0eDRag;m;Q>UtyXeNN#$Q;6L*HF4zEkqR$G82rf<$Tm=7- z8(;4bTo@mT5fWVdg!{6{7n^*+$(PtczEHszdi;_yzNAs83;xHcz`J`J7(ST2s^pc5 ztM(;m6?@E0=44x3rV&=ME!}1t_8>^N7gpy?{T5+X>_Fl9(N6jf-QFQlv9hF{iK35~ z+6zSfyW`1F)`Z44!5$1edt6vGL*&Haq-A#Hq_mBSW#mRP8el>>HW_XK($bDz#U6hB z*0}7C`Icq%rf!}aCHX%j2{5td)f2GS`U?fA!%q%!rs7fSLJGfO56M_PBOgCD znk=h7ISX&r=PgWhITS%fS?}qwx8_^`i$6=ge~i8{9Pj48=Qq37s=prFptJ`fXATxitdG^M)Ez3Ph`@r-8<++*-MZ`t;52ld54 z{pf_MOXpcc!;ImGb86jrVunUlnjFbh#V+}pwJL@=IVvz1;ASr)8TsmgpBeu{FgcDC z%5LRy$r8?K;rz)0ovLQlKC(q$cZsfo8*_%l1`j#0!-~Fx zM=QFFNvxH4RJ2;rJg!3oiJm{=@fCbO7r@?)8g01x&+SGfg7Hz04-JIrW)x?LAqdq1 zli@)*-;8dqcyrbU1-lB+(j?`sG&v8`N6qK^fC zMz7#;lHxHD)MAzr#e2jYJxPCmEaZ7X8z{^(CYXKqWXnC+$U6^pb@y@&|(8tA)rk)_K2y)x)kcl3Y| z(yfE>NwkgOwpsJhFdr7`Flu+$P9r^h`2~{}h2yMQFlOL^slUg3u#PJ?sP7Ol@6LoJ@U9t==W7;e+!a7M&>n2;2*Sh{D4IFl?hC+ z#V|6UENEnyuT64B7lVzGlx4KeA&9*>=Av|W85>1ftwSPr`j1#=*?w=f4~_(a!P>6X zaTzix#INkizdRu%orEE~N&igc(U8dr*B+Ny!%09D)gIO~2n~!;~r#hSYv>r83b$nN4&zh4%582`to>Z|*T>Z2tyUwAK z@@AHas&(A?l!Igkt%_A?t&)QItS6SZbG?x{V8ZHkUw(M`1#Guv$FHKPnrML%eRG&n zj?PmU+%_qB(_*LI90a&@g?jQt9=UDfY@^$SpoqC`J07%BHrypAv}~i^cQR?=W%g*d zCH@6@^TVw5-@-_Ajq4Whft+7$>PP*antpAol6}8E&{hAfzQ?}Wx2Wnrp4FA+l&+B+ zZ@sm_J0Sn04wg<`66lWEj@3A+kI^QMA{%I2)oD>ny&FKEHHrc}JYu&E1>jn}oVrYW zP4|d#24NGyfURjM%usrrT#b z*6W_>d)ItTrh~ay!(8)VPqv+@RvxG;U{CID?}M_SfIF5QX~eePBo^)o?px*LrJ$lE zh4WpYq9mqbS%@`jR>5q3@KsLJMP@kbek;Y#xACZ&vOFP@GlG&LOv)}D4-;+P zqNt-C@(JUK$oV;REYwf4_3~HOL|1W*+*AI6%y&cDbOL|egtAH+T5me#hZF6>HEx>v zj}^~+y+M23Z%f_2m}r>k?bM&sRLXT_4N2gLvY~U^en0!rXy9>KA2x!>qf^GZ}hhOW7`WxBRrGFnBD zE3?^8K{?;i?uN%nr-|Xd&Oy`1E@>X@6k9>aHKlRJ6Njh@!5s)Ll624D;aY@F5o z9Z_qA?X+&T9>eeR(|hf+zCNh%T`gzbMmckc`^F`zl68NVnE2^JAHZLO5b~D3bP5ue zUH8Pj60ysR`{{aGwv$J&)dUl^_B%0rPwQVF4AvEd0`FCybOGW?KSmATdW@_rS0Em? z6~6Su3Rq-M!uV6>dSwaUE{YVC&UrOHv$1H*Hq8I?IZ@%y5pUc%b=2G7f(9iy-_>7B zie`D@L1Cf@(#`#h|JUBQ-pbDUhC4A#A6pzP(gD!q&z^B@X1RVK&v;*}-uc6eyh0y*9eG}ip{dhlv#zY=WY@{-2Xti(Xs=UX7sYr%h~9Bi&)3%FO2>&7RELD+ z4$yXp+aBBpY3ghn-p}lXJGuS=c``vsV$M9rFgrV=^!`r77<2;#CQj9#srRJaJS1Z| z`beiH=o~A}k8YzrT)sbK?Y`^6bf*LiG3zq_OV`(b>C{b#^k9zkEX>m@Ik`f$Y!ea?^P@T~>fquJn&5nKEwOBLU^{?v84Gy}MHAC{zD5~x2|BqU}w zJ5*ji!)oxN9Jc|~1S)>M7f(=9&3PyuKGET&MS-|~UzH_{OqqU8Y*$#P)Q)(G`?chM zVrJ||Z=C`ZBnwawQo3R1|4Pfu&t4tv+=UiX+@Mm)|9tDB+rELz-Lj)a`2);55h&+B z^-0q6eNDL>!K_;@tuqn^*6`!n&(969vSci4-r zpI_7oH>`;wsyV6O+!(_ovrqUh6f>WvpQ-x|GD`JjI}Ru#_F0(< zV5KH`_pj@I>ykBV;5+UH5}NYH)-26sWSLETLN~7uFo*Pt&R*HyX@QI4{Z%fBAhogJ zd}GT5rAn>5dt*cjo!pgPSL3?f2^#L{875f*|i@*Mt{K4Ij`j=dM99x z%VVElfAuj&U2<&Y-F0S<$XvwEO(6fCjkJcjrUB-_{<->w{gdDyXWpl2d)8VEljq7U zrrQwZ2ZN_=|4HmpG_+=4SU1D`LYZNB_lans(Y!dk?cM(RLMjgxX_c z9kl9QKOs%OXlo?ZZPqf+IZ&V(+T?M&aAQLuoMTRY_O$SsRAzxSy|JoidM0TUFX6;z zOwQFcTpyS*TQ^xHt*=9=7d)0;w>mh}MStyq<8~>M!VGnELZ_Ynh6dK~QUFv}sLM?f z|FjowC=s_>*PXeo{K`)phJ@ng;ytq{8ck2tEAN}^O>Q+sVc|*X`Q1>={|w&TYsUU- z^4*;k{ZBd$B~>Oh!>V}^X4gauzkTHye?rZ=Fh`k)cP6Q4WJb)*%1jaWh*eE`=>?2? zaqYLNI+92?OG+|k1}DOX?lv^Ic90LSps+zr{Fav{@K7j4a-Yt8+~Qy=gaoGj3_jRf zbFtGn&e!4

m`vu!CJM#Xd0^=|k~s+^|pdx!F5rOaGz9|G58Z-+=>l=K{*kCet*H zE}YfkH2a{owC^ySBm+*6!=meCWhu+z`h5d}mdKOwEYI57yY%3zLW_1>6zg?tfMg!D zCAl(!;yZThI_0KpM{mnaw`f?lV{sEtJ17E> zsl1oqxJBu8Zb9=y+e5{pB@Q`7q@3YWt(r(5cI1b5GttX`B$hh&w;hy>+)QQ`Jq8A0 z@Yc5@-N)D03-Cv5RV-l?;qBOyb2au({~_t3ea~i;(9HXc)#0|}KjzA2j00a%siqBe z^uayo%Pr77VFVj^UFjGU)n=G8`%^s~Qtt?HYn#KT7R$JJhlU@cWcC)y!A<=x??rc2e2ILcvFLByeJw_r2Nx)7eZB3Qp&gR5EjrX0~7 zszI5Yb7*xHes#gpG9E9+{ZR-}-iECwYOjC0E+8Q2Uv=XL8O2Iap0=*w#|AR=!xVK4 zd{q!+dpzKzJ7$lVVn6+eXl{T;7GvfwNunZA_T>CXimZOxEuzCCprlh6K&WfxgD~u= z(Lv^Vylo1<&-0Y5GSK|FKu7@DXi><{c0DYyU9j_??yR45M)y|NW zGh4|%c{%6dC@qVCb0ga~7eQTvkr~o`H6gpiMy~y}N`p_8vrn*wwYg=y(*E8O@g44X z@360srdh#xTqvPDgU2aHB^64lbZcMFRlYd5&;l*(=ngDlq=Gr zDfIYO00oVT($ewMgC275SHX(!)fqBP_W{IM<^}Osd!BnNo?z{V82OyVar#y~cZ0tw zZZ?6WJ1_Dm<-1mFM4jmagdBrR-j%4|{nA0bx&2sFK0KkWqm}tuKV}>6ubye9SCBm+pkTi) zaa~{UFm4%uF9NY)UhY+D79k-%T_h=+c9Q?`g1agxg^f9)#kH)63EA4Bdqb9uSxwHE zuL1;7?VXqUQO8HTw3|vLG^_{uUw#JWpOO{0J}V#3?K&M+BC_48K3Ts`HH7E#Y7t6@ zXz_glk~vX6=ojJoQrYE>t}dDPX;-8;hzk*j3l7)NnK)%@mz3GT4AY}bCS(H2r~({Z zY&}tEdst+9*Sr;G?TqvzpuTP*X1{TqJNeio1edbQ&k+ldH-~dR>Si1b1z1~R?PK6$ zH?m{`-m2V9XgjKILM}0~m1FIIg-tPE39IH1@;oPy?JfVF2I{1ot1^Mqa20d0)7$PE z=AuqObZl;)X=Le>&~i;_c#R-<&8i#?Xl)nT^JnuU#b_|~mPHn(D>lZO5~h?hB0q}Z z>wh6;6)Q#6S)BR`$<@OQ=akz+5YM)-jL+J#%v$B_iX(?Po4RG!2qVUl--0`9pU0@9 zeDw*WeuinsqD5xQ>iEGBJ5UsJlX-TA=}L~}jCe$Bj#VK(ito*O{xcXhH%zef-5x@f z9I#A>aHv^%hJKJD=RKbMNowi89$<3rp*3a!(a!#WbJawgiAg)aXkOrzWXd^oy>r*%l3~UxO|JT?QV+R&IkW$r~jR z`rCzTf1@W4S0Ch19u#&X2r_~-OjExkek7jAYZt2RxrryM@{a20{ehW78+&*AoMB4c z#b>g)L%@NNlO~Ka2RfZ#vqJ)%Ji>K3pUlmA)o*tjj8$VXkTTr(U=a5;7@67xsEKu( zVT_mJUx4JF>yx3`;JkW|-VT5&V(L4A)`Jmh1Ci|qwoV0hxUq&GF(u?JEcJo`RPq9g z<@Zc`7N&e%a_w3|)uuN~A@Y>mJft6_+Z=WvvMrtBhiNW?hBr5=4=<9G@42ne6a%r zW1VH-BRA-ypsy!L+Z-`ANvGpi=ZdRN=&Jk51M{m0tQt?W9a4<%O5YOrr;jLQEb_39 z*6+uSL4Y9Lrg`B)JV>nNKgy#odumYRTFFttB-XP_mtb$BSRPo8?%gF$j=dZ{C3nTt{`GOh66PPhpM1N3e^WrkbrI) zhnWD&iw!G|YPvpq4l6i2*DQ|Z>;%`^y}_I#-|LNAoj)l*=)PN|oxR%ElMLrT)&7uA zcVh42vFZzAAoQ8COR=mWjW;1dF$%E1r{}D#S{CaDsbIT1lp*SZ> z-h8izUgbUq5?Q+-Fmx6jKQ@*z+=$QDZWkGSXm1eWLS&URrs+q#S%rN%zRZPOzg(rh z3sul3dpo5KSB&bvW#6*2olN8PiJ*^?|GA)uAQ#PSz$40tUIIR<;!sAZ_0GDyB?^=i z7W`%jOxhKL&kyugVpyy8I|M`I8Nm^}333@TdKWz#}qeZz_VTVNAdbmM0|KO5dW0t`T66Pl;OT zfF|^vFoN91_-;>9=zdO512a*c_#&_4YV6#UDT^j=$=`@Tb9y1wBKN(Mzd}lzV9-{g zpHf6h=5++?CC0?M=jG@}X>dm3$Z@MmR#+t&t$hsaY8Tx}#6>NdVkZn;!$~{r`d=)+eK%ZiPMPu_YxF15GX!mMxxbpKbeV#fdjK`2$F>RO)y;g zcEOgbmaecic|VDh%oPMde-NGOO%5~D2Dmw?~ra8XG5=X zT9i6)U<-IAU82fV7};CSW;TqVi!LmgV0?d3mDA3VFj6EREAuG}3s3_UsG9&XYp}pg z`X}`43RjPkZ_i3xxQr7SnOyS-Qs6h^$s6tkTo`y9jspB6{3xqR=BOm)dImFUeSkS< zixbge{Bu<^i*X>-?UGT>C~_?uTmiL zm-CsUP7IyxVu{fF=bpz_R`G)VVF8W=QmXMciz4nHBlH&>N@`%8W;KsMXZ;NPUU4<< zI-s{Nrx$IkSJg2{=DpIRFwEQkTFKWYM?9b`%o7?a4MI>Ipv!I>us)K;@W$a=$(vlh zYyWj-zu|4i#uuq(6@A_YP#1;2=P-wcC?gLF-XO4eS`$>fvzd@*pb@#K!r>|q4E?Vj zqNGQume^gnNb>JWV8*^jUwfa`hTxdm(FsU+8^6g)ckL)+N{%M;SWjR&jNgcucs2~H z06-d6;7qdEvry$AWS-omD2y zl{KC2+|4Uk)VTnwLitrB%| zAU6hjl?6pWBR)sj^QRj*f8fAA{Q$)pzu=%3&tMdXd1QGjP-=9DrbbecQ)ak}IjdY- z2@X=UiYp54NNQ%HJxh!|rilus@{#$vr6GZX1MrK=?wi;`qhBf5i9{VJ z^?y_@U2AG zcD&5@%q#cp_Y<@Ysj^4YJ{qRzhx{~f8Ow=sZyn2j2bS4`HB-@5GYf^!o@v@D20K&h zCTDDIw3Ov8yB&Md(N}2w&ADEfs-aM@K_$uUR5a<-v%+3f!(L1{qJQdmEW3@Or-jG* z(?}l}z#jPJZ!!82LyD{dUHI9k720b;rsBy^W-b12^c?#5DO_tSMQIjF6$>EhgO z>%hnCmoVr-$#(!5OERNHZsqn7hn+wlcSrK_j?UH=(e@d&J4e*#-J!s^Z3 zgUhS+J9ld-6MgNn>gK?0&2R<*Glgrr|7`xCk%j&n=oafN0E(^6gef1`3(9gSjd^y1dy$r>Yi+lbsD6>9_0}ewvAgK^wk2c_=f`>G^+gYQihRRDjP6>!XZ-k*eIkhe z6!=6hgySQl=0(K+&W{+oXbjYgw>lwDpWU5Of}QCxEyL&G>- zGPZTBE~5(`d(Si$h0+w+Zk4qz1(!dKQH!ms8LD4h8;rHy+EM2({tG=>Lt1jwAqLDH z_$}ZDQSs0yocoKlwG($Vyt58SJofWE8m@lFhz~yh3w}5PyZG{x;x9k5{{Qg%FsxC> vK3{&n{v`mv1mKqd{6Ym_f&Y0b;2Zt*PUYldQ35n72x4~J^4H>DT>kt&dzx9W literal 0 HcmV?d00001