נייַעס - באַזוכן פּלאַץ
Practical Web Based Deep Learning and Security by Example Third Edition Charlotte Harper July 3, 2024 Updated/Converted June 3, 2025 Foreword: Security considerations in building software for the web are an important part of any web developer's plan and execution while engineering a prototype that is dependable, stable, and useful for practical purposes. The DOM (Document Object Markup), with it's implementation of HTML, JavaScript, and CSS as well as backend software implementing Python, C/C++, Java and bash, give web developers the freedom and power to create a wide variety of projects that express creativity, provide ease of use and functionality, portray humility and character, and provide ease of use as well as convenience and important services that are all attractive to the average Joe, the end user looking to kill time or get something done on the internet, usually on a touchscreen smartphone device. Most people wouldn't even know where to start when they want to build a website from scratch, they would tend to start on another person's website and build something limited in functionality, dependability, ease of use and especially creativity when they could have had all the latest powerful tools at their disposal in order to build something useful without wasting time pressing buttons, and especially wasting money paying for expensive subscriptions to software few people wanted to use anyway given it's limitations in ease of use and flexibility. If you have a few minutes to read through this book and learn what I want to teach you, or even speak with me personally about your goals and get some guidance in the right direction, and are motivated to learn to code and write your own software, take this book home and set aside some time to learn to build the next influential, powerful, streamlined and important web application, a website that is all on you and does exactly what you want and meets the needs of your audience. About me: I am a software developer with a wide range of experience in C/C++, Java, Python, HTML, CSS and JavaScript. I build websites people want to use, want to visit, and even get addicted to using just to learn, recreate and kill time, and most importantly, I sell software. If you had an idea as to exactly how you wanted a website to look and function, you were willing to support me so I can meet my own needs while I meet yours, and you are willing to cover the costs of running a website yourself, I would build you the next YouTube, TikTok, Twitter, Google, or even a high-tech security app only you can access. Instead of trying to sell you my time, I'm trying to buy yours: I want to talk you into building an app (website) yourself with the information that already exists, and teach you what you need to be an independent software developer, entrepreneur, leading a successful career in whatever field you desire. And let me be clear, the education I give you will be informal. You could go to school and learn all of this with a formal education, or even read this book in school, complete your assignments, and take away a great deal from your education, but I won't formally put you in the hot seat and ask you to complete assignments. I'm not your professor, you can think of me like a friend who wants to guide you toward a career driven by your own personal success. And I'm not selling you success either, you will need to buy it with your time. Learning to code has a steep learning curve and was never easy, or even supposed to be. You need to work as hard as you possibly can and continue to try and fail and try again even when you are frustrated in order to learn and build apps yourself. That's in the nature of code itself. Code is run by a compiler that is designed to give the programmer error messages, and these will teach you how to code, even if you are simply copying the error into your search engine and reading other people's examples. And I must say, you don't need to be extremely rich, smart, successful, or even detail oriented or organized to build an app. The computer takes care of that organization for you. You just need to persevere through the trial and error, maintain focus and work hard at what you do, and you will have a very successful career in the entirety of what you do. Who I am: I realize that the last section was more about learning and your take a ways from this book. Who am I exactly? That's a complicated question. I am unclear on that myself, as I suffer from medical conditions that can make it difficult for me to even code or write this book at times, while presenting challenges with socialization and identity issues that make my life more difficult when it comes to introducing myself. In short, if you are reading this book, you brought it home because you flipped through it and thought it was useful, or even if you just read this far in, to you I am a like minded individual who wants to see you succeed in everything that you do. I am an engineer myself, a software developer, and a student, and I am writing this book for other students who want to make their lives easier by having a handbook of the software they need making their lives easier by giving examples to copy that fit together like a big puzzle into a working, useful, large, functional, cohesive, and engaging app that can drive success no matter the line of business. Largely, this is what I do: I build apps to help myself and other people succeed. I am an author as well, though this is my first publication that I intend to complete in order to put my portfolio together into a useful document, and I am an artist as well. I'll admit this to you, I'm sort of a strange person. I'm not perfect, I've had run ins with the law even leading me to leave colleges and universities and leave states in order to try to make a name for myself with more success. I am a woman by birth, I wear makeup, take photos of myself, wear dresses and other womens clothing, and I stay conscious of myself as a female by nature. I've had issues with other people in the past that lead to struggles with writing and building webapps, and I apologize that I haven't been able to get this book in your hands sooner: You needed this. You will want to read and write code that looks like mine and works like mine and does the same thing but even better, because if you can afford to buy this book instead of mashing your keyboard like I do just to create a book yourself asking money for it, you have the resources you need to be successful in your life. I had all sorts of issues with family growing up, health conditions, doctors, the media, and the law, and my code deeply reflects the struggle that is feminism and female nature in a divided and frustrated world. However, this book is something I deeply care about, my baby, my portfolio, and my livelihood, so I appreciate your consideration when you take the text home and carefully pore over it in order to learn from me. Please keep in mind I am not perfect, this book will have errors, revisions, and new editions, and you will need to think with your logical brain as best you can in order to have a successful experience with my writing. Also, understand that I mean well for you even when you face challenges when writing. Think about it like this: When you can just rent a computer system to do anything you can possibly imagine in the digital space, store all the information you encounter, analyze and organize it, and come to understand it, you will inevitably encounter difficulties with the information you are ingesting and even publishing. I tell you this because I encounter the same difficulties. Use this book at your own risk, work with your community and communities available to you to build software within a safe setting, and don't take things to personally when you fail or even succeed in the wrong way: That's how I got this far, and why I can bring you this text and help you succeed without diverging off on a path of madness that leaves me ruined, torn and frayed while I encounter the ordinary problems everyone does on a global scale thanks to the paralellistic global scale of the network on which we will work, the internet. You might not be very familiar with who I am with just a few words, but I encourage you to read on, you will get to know me as you continue to read and understand me while building your own projects to complete your work. There will be no homework with this book, as long as your professors or teachers don't assign you any, but I highly encourage you to build a portfolio of projects yourself as you read along, as well as a capstone project showcasing how you can apply what you have learned. My capstone project is the basis for most of what you will read in this book, as it incorporates code from my previous projects, code I have created and learned to write methodically by hand, and a wide range of ideas and tips that have helped me succeed to the point where I can spin up a simple app that is fully featured and looks and behaves like a popular app you might see your friend or family using, on the internet, advertised to you, or in the news. What this book is: This book is a tutorial by example. You can find code here, instructions for how to learn to code, information on debugging code and fixing errors, troubleshooting steps, instructions on how to back up and save your code, re-deploy if anyone breaks your code, secure your code, deploy your code, build interactive websites that are entertaining, engaging, and addictive, and you will get a sense of who I am, why this is important, and how to portray yourself, your app and company image, as well as the software you build in the absolute best light to be the most attractive as possible to your end users, your website's visitors. In this book, I will demonstrate a number of examples of software design with a focus on the web as a platform as well as security. We will initiate the learning experience ...
פּראַקטיש וועב באזירט טיף לערנען און זיכערהייט דורך בייַשפּיל

IWebhu esebenzayo yokufunda kunye nokhuseleko ngomzekelo Ushicilelo lwesithathu I-charlotte harper Julayi 3, 2024 Ihlaziyiwe / iguqulwe ngoJuni 3, 2025

Intshayelelo:

Ukuqwalaselwa kokhuseleko kwisoftware yewebhu yinxalenye ebalulekileyo yaso nasiphi na isicwangciso somphuhlisi wewebhu kunye nokwenza ubunjineli ngelixa i-Bigenegety yinxalenye ye-Protoptype efikelelayo, ezinzileyo, kwaye iluncedo kwiinjongo ezisebenzayo. I-DOM (i-jaceup), kunye nokuphunyezwa kwe-HTML, iJavaScript, kunye ne-CSS kunye neSoftware yokuSebenzisa kunye nokuSebenzisa i-CyThong kunye nokuSebenzisa i-CYTHODE yeNkulumbuso kunye nokuSebenza okuBalulekileyo kunye nokuSebenza Umsebenzisi ojonge ukubulala ixesha okanye ufumane into kwi-Intanethi, ihlala kwisixhobo se-smartscreen smartstone smartphone. Uninzi lwabantu aluzange lwazi ukuba luqale phi xa befuna ukwakha iwebhusayithi ukuba baqalise ukubhalwa kweSoftware, kwaye ngakumbi bachitha ixesha elininzi, kwaye ngakumbi bekwazi ukubekwa kukungabikho kokusetyenziswa kunye nokuguquguquka. Ukuba unemizuzu embalwa yokufunda le ncwadi kwaye ufunde into endifuna ukukufundisa ngayo, okanye ndithethe nam ngefowuni yakho, kwaye ndibambelele kwi-Windows, kwaye ndibambelele kwi-WEBE LOKWENZA NOKWENZA NOBUCHULE BAKHO NOKWENZA IYOHLE NGOKWENZAYO NOKUFUNDA NGOKWENZA NOKWENZA LONTO OLUFUMANELEKILEYO LAKHO NOKUFUMANA IIMFUNO ZAKHO NGOKUGQIBELA

Ngam: Ndingumphuhlisi wesoftware ngamava obanzi amava kwi-C / C ++, i-java, python, html, css kunye nejavascript. Ndiyakha iiwebhusayithi zabantu bafuna ukuzisebenzisa, bafuna ukundwendwela, kwaye bafumane ilikhoboka lokusebenzisa nje ukuze bafunde nje, kwaye babulale ixesha, kwaye okona kubaluleke kakhulu, ndithengisa isoftware. Ukuba ubunoluvo malunga nendlela oyifunayo ngayo iwebhusayithi ukuba uhlale undixhasa ukuze ndikwazi ukuhlangabezana ne-YouTube, kwaye ndiyakuvuma ukuhlawula i-YouTok yam, kwaye ndiyakuvuma ukuba ungafikeleli. Endaweni yokuzama ukuthembisa ixesha lam, ndizama ukuthenga eyakho: Ndifuna ukukuthetha ekwakheni isoftware (iwebhusayithi) ngokwakho isoftware ekhoyo, kwaye ukufundisa impumelelo ephumeleleyo kuyo nayiphi na intsimi onqwenela ngayo. Kwaye mandicace, imfundo endikunika yona iya kuba semthethweni. Ungaya esikolweni kwaye ufunde yonke le nto ngemfundo esisiseko, okanye ufunde le ncwadi esikolweni, gqibezela izabelo zakho, kodwa ungayiphathi kakuhle kwimfundo yakho, kodwa andiyi kukucela ukuba ugcwalise izabelo. Andinguye unjingalwazi wakho, ungacinga ngam njengomhlobo ofuna ukukukhokelela kumsebenzi oqhutywa yimpumelelo yakho. Kwaye andinakuthengisa impumelelo, kuya kufuneka uyithenge ngexesha lakho. Ukufunda ikhowudi inejikajika lokufunda kwaye ayizange ilula, okanye ide ibe. Kuya kufuneka usebenze nzima njengoko unokuqhubeka nokuzama kwaye ungaphumeleli kwaye uzame kwakhona xa udanile ukuze ufunde kwaye wakhele. Kukwimo yekhowudi ngokwayo. Ikhowudi iqhutywa ngumnxibelelanisi oyilelwe ukunika imiyalezo ye-PROCMRMER: kwaye ezi ziya kukufundisa indlela yokukhokelela kwi-injini yokukhangela kunye nokufunda imizekelo yabanye abantu. Kwaye kufuneka nditsho, akufuneki ukuba ube sisityebi kakhulu, smart, uphumelele, okanye iinkcukacha ezijolise ekubeni wakhe i-app. Ikhompyuter ikhathalela loo Mbutho. Kufuneka unyamezele nje ulingo kunye nempazamo, gcina ugxile kwaye usebenze nzima kwinto oyenzayo, kwaye uya kuba nomsebenzi ophumeleleyo kakhulu.

Ndingubani: Ndiyaqonda ukuba icandelo lokugqibela laliselokufunda kwaye zithatha iindlela ezivela kule ncwadi. Ndingubani kanye kanye? Ngumbuzo onzima. Andicacanga ngokwam, njengoko ndineengxaki zonyango ezinokwenza ukuba kube nzima kum ukuba ndibe nzima kum na, ndibhale le ncwadi, ndibhala le ncwadi ibuhlungu ngakumbi xa kusenziwa. Ngamafutshane, ukuba ufunda le ncwadi, uyizisele ekhaya ngenxa yokuba uyiphosile kwaye ucinga ukuba iluncedo, okanye nokuba unguwe umntu ofuna ukukubona kuyo yonke into oyenzayo. Ndiyi-injineli ngokwam, umphuhlisi wesoftware, kunye nomfundi, kwaye ndibhala le ncwadi abanye abafundi abafuna ukwenza ukuba ubomi babo bube lula ngokunika imizekelo ekuqhubekiseni akukho mgca weshishini. Ubukhulu becala, yile nto ndiyenzayo: ndakha ii-apps ukuzinceda kwaye abanye abantu baphumelela. Ndingumbhali nje, nangona oku kukupapashwa kwam okokuqala kangangokuba ndizimisele ukugqiba ukuze ndibeke iphothifoliyo yam kunye kuxwebhu oluluncedo, kwaye ndingumculi ngokunjalo. Ndiza kuyivuma le nto kuwe, ndilungile umntu ongaqhelekanga. Andifezekanga, bendiye ndabaleka uMthetho ndide andindikhwelise ukuba ndihambe iikholeji kunye neeyunivesithi kunye nekhefu ukuze ndizame ukuzenzela igama lam. Ndingumfazi ngokuzalwa, ndinxiba i-makeup, ndithabathe iifoto zam, ndinxibe iimpahla zokunxiba, kwaye ndihlala ndiziqonda njengesetyhini ngendalo. Ndiyimicimbi nabanye abantu kwixa elidlulileyo elikhokelela kwimizabalazo yokubhala nokwakha i-Webapps, kwaye ndiyaxolisa ukuba andikwazi ukufumana le ncwadi ezandleni zakho kungekudala: Uyakwazi oko. Uya kufuna ukufunda nokubhala ikhowudi ejongeka ngathi yeyam kwaye isebenza njengeyam kwaye yenza into efanayo kodwa ilunge ngakumbi, kuba unayo le ncwadi ukuba iphumelele kwimali yakho. Ndandinazo zonke iintlobo zemicimbi ekhulayo yosapho, iimeko zempilo, ogqirha, amajelo eendaba, kunye nomthetho, kwaye ikhowudi yam ibonakalisa umhlaba kunye nengqondo yengqondo kwilizwe elahlukileyo nexhala. Nangona kunjalo, le ncwadi yinto endiyikhathalele ngayo, nyana wam, iphothifoliyo yam, kunye nokuphila kwam, ke ndiyayibulela ikhaya xa uthatha i-ofisini yakho ukuze ndifunde kum. Nceda ugcine engqondweni, andifezekanga, le ncwadi iya kuba neempazamo, uhlaziyo, kunye nohlelo olutsha, kwaye kuya kufuneka ucinge ngengqondo yakho efanelekileyo ukuze ube namava akho okubhala. Kwakhona, qonda ukuba ndithetha kakuhle nokuba nawe xa ujongene nemiceli mngeni xa ubhala. Cinga ngale nto: Ndikuxelela oku kuba ndihlangabezana nobunzima obufanayo. Sebenzisa le ncwadi ngomngcipheko wakho, sebenza kunye noluntu lwakho kunye noluntu lufumaneke kuwe ukwakha isoftware ngaphakathi kwendlela ekhuselekileyo, kwaye kutheni ndikwazi ukusiphulukana ne-windows jikelele kwi-jikelele yenethiwekhi esiya kusebenza kuyo, I-Intanethi. Awunokwazi kakhulu ukuba ndinamagama nje ambalwa, kodwa ndiyakukhuthaza ukuba ufunde, uya kundazi njengoko uqhubeka ufunda kwaye wandiqonda xa uzakhela imisebenzi yakho. Akuyi kubakho msebenzi wesibini kule ncwadi, lo gama nje oonjingalwazi bakho okanye ootitshala abayi kukukhuthaza, kodwa ndikukhuthaza kakhulu ukuba nikwazile ngayo iprojekthi onokuyisebenzisa ngayo into oyifundileyo. IProjekthi yam yeCaptone sisiseko sayo uninzi lwento oza kuyifunda kule ncwadi, njengoko iwisa ikhowudi kwiiprojekthi zam zangaphambili, iKhowudi endiyenzileyo ndiyibona i-app edumileyo, kwi-Intanethi, ebhengezwe kuwe, okanye kwiindaba.

Ithini le ncwadi: Le ncwadi ngumfundisi-ntsapho ngomzekelo. Unokufumana ikhowudi apha, imiyalelo yendlela yokufunda ikhowudi, ulwazi malunga nekhowudi yokulungisa nokulungisa iimpazamo, kwaye iphinde ifumane ikhowudi yakho, kwaye kutheni le nto ibalulekile, kutheni le nto inkampani kunye ne Isoftware olwakha ngokukhanya okuqinisekileyo ukuba yeyona inomdla kakhulu kubasebenzisi bakho, iindwendwe zewebhusayithi yakho. Kule ncwadi, ndiza kubonisa inani lemizekelo yoyilo lwesoftware ngogxile kwiwebhu njengeqonga kunye nokhuseleko. Siza kuqalisa amava okufunda ngokwakha iprojekthi esisiseko usebenzisa i-Unix Shell, kunye neempawu ezibhaliweyo. Emva koko, siya kuhlolisisa iwebhusayithi yeBlog esisiseko, iphucule ibhlog yethu kunye neempawu zefoto kunye nokusebenzisa ezi mpawu ukuqesha izisombululo zokhuseleko usebenzisa imodyuli yokuqinisekisa i-pluggle (pam). Siya kuthi emva koko siphonononge ifayile yokuphatha kunye nokulungisa, ukuhlola ividiyo, umnikelo welizwi, ukuskena kwe-bearth kunye nokuthathwa komlinganiswa, phakathi kwezinye iikhonsepthi. Ngasendleleni esiya kujonga ngayo i-APIS eya kuthi isincede senze isoftware yethu iluncedo kwaye ikhuselekile, ngeendlela ezikhululekileyo nezihlawulelwayo. Endleleni, siza kuphonononga ukhuseleko lomzimba kunye nezixhobo ezifana nemikhosi ezinje ngemipu kunye noyilo lwe-Mure kunye noyilo lwesoftware, kunye nokubonisa ukuzikhusela nokuzikhusela. Siza kuthatha ikhefu ecaleni kwendlela yokwakha imidlalo, i-2D kunye neenjini ezi-3D ze-Shoredware ezifakelweyo kwimizekelo yokufunda yesoftware ye-lesping kunye ne-smassic of the ye-leasting kwirabha. Endleleni, siya kuqesha kwakhona izisombululo zokufunda ezikhoyo sele zifumaneka ukuze zikhusele isoftware yethu. Siza kuqalisa izixhobo zesitokhwe ezikhoyo kwiwebhu ukuze zilungelelanise kwaye zikhusele inkqubo. Le ncwadi sisikhokelo kwimpumelelo yakho ekwakheni isicelo sewebhu kwaye siyidibanise ngothungelwano lweekhompyuter kunye neenkqubo ezifakelweyo zoomatshini, kunye nesikhokelo seSoftware ngaphandle kolwazi lwangaphambili okanye amava angasemva.

Injani le ncwadi: Ukuba ufuna ngokwenene ukuba newebhusayithi, unokuseta nje ivenkile elula kwaye uthengise into oyifunayo, thumela ibhlog, iifoto okanye iividiyo okanye ngaphandle kwekhowudi enye yekhowudi. Le ncwadi ayisiyo. Le ncwadi iya kukufundisa indlela yokwakha isoftware eluncedo ngakumbi, ibonakale ngokupheleleyo, isebenze kwaye ikhuselekile kuneso sesoftware, kuba ingabambisa ukuba i-prototypes, kwaye ingabambisa ukuba isebenze ngempumelelo. Ukuba ulandela le ncwadi ngokusondeleyo, uya kufuna ukubhala ikhowudi, ikhowudi yophando, wakhela ii-apps zakho, kwaye uya kwenza imali kwinto oyenzayo. Ndiza kwenza imali kule ncwadi, nditsho nakumanqanaba okuqala, kuba iqulethe abantu abadinga kwaye bafuna ukufunda, kwaye sele bethengiwe xa bethenga okanye basebenzise izixhobo zam. Le ncwadi ayiyi kwakha i-app yakho, kodwa iya kukukhankanya kwicala elifanelekileyo kunye nezixhobo ozifunayo kunye nezakhono zakho eziya kufuneka zibhale njengeesoftware ye-web, nganye iindwendwe, iikontraki, kunye nenkxaso.

YINTONI Okokufunda: Le ncwadi iya kukufundisa indlela yokwakha kunye nokuthengisa isoftware, isoftware esebenzayo, isoftware esebenzayo, iRekhodi ye-Bharode efana ne-Blue Station, iRekhodi ye-Bhabangs ukuya kwiBluetooth kunye ne-NFC) yonxibelelwano. Le ncwadi iya kukufundisa indlela yokusebenzisa ikhompyutha eyonayo, egxile kwi-Debian Linux, indlela yokwakha ikhowudi ye-bacthon, enza ukuba ixhase isoftware ye-bootstrap, yenzelwa ukuba ixhase isoftware ye-ppystrap, yenzelwa njani na ezinye iiwebhusayithi zokubonelela ngeempawu zokhuseleko Njengemiyalezo ebhaliweyo yokuqinisekiswa okanye ezinye iinjongo, ukuskena kwe-ID, umfanekiso kunye nevidiyo yokumodareyitha ukugcina isoftware ikhuselekile, i-Crypnouscy Rection, nangaphezulu. Uya kufunda indlela yokwakha izixhobo zakho zeBluetooth, kunye neebhetri, ii-chargers, i-microcontrolfrolles, i-microcontrolfrolles, iisekethe, i-windows kunye ne-windows kunye ne-3D kunye nezinto ezikhutshiweyo. Ndiza kubonisa ukuba iinqununu ze-3D zisetyenziswe kwimveliso yongezelelo kunye nesixhobo kunye nokwenza izibonelelo zakho ezifakelweyo, izixhobo zezakhiwo ezinxibelelene, itshana, imijikelezo ye-elektroniki, kunye nezinto ezisebenza nge-elektroniki, kunye neziphumo zomsebenzi. kwaye ubenethiwekhi kunye neBluetooth kunye newebhu. Ngokukodwa, siza kuhlolisisa izifundo ezimbini, i-smassagre eshukumayo kunye nomtya wasekhaya, obekwe kwi-OpenScad, efumanekayo njengomzobo we-pictor okanye i-Somandla yokusebenza kwaye inokudityaniswa kwiWebhu yeziphumo zesantya. You will learn how to build and deploy a website from the ground up with no prior experience, make it functional, secure, beautiful, useful and most importantly practical. Uya kufunda indlela yokusebenzisa umatshini wokufunda kunye nombono wekhompyuter ukwenza indawo ekhuselekileyo kwaye irekhode ividiyo kunye ne-Audio kwi-Veble yakho ukuze usebenzise zonke iiwebhusayithi onazo, kwaye kubaluleke ngakumbi kuzo kwisoftware kunye neshishini. Le ncwadi iza kugxila kakhulu kwimithombo yeendaba, ukhuseleko kunye nokufunda komatshini, ezona zinto zintathu zizakunceda ukuba wenze isoftware elungileyo kwaye ihlebeze izinto eziphosakeleyo, kwaye ziqinile. Le ncwadi ifundisa i-UNIX, ngokukodwa i-Debian (ubuntu), i-Bythol, HTTML, i-CSS, kunye nesoftware yesoftware efana nesoftware, kunye ne-FFMPEG. Ndiza kukufundisa indlela yokurhweba i-cryctocurcy ngokuzenzekelayo, kwaye ndithathe intlawulo kwi-cryptocrency okanye kumakhadi okwenziwe rhoqo ngetyala ngelixa ndibeka iindwendwe zakho isabelo sakho ukuba ukhetha ukwenza njalo. Ndiza kukufundisa indlela yokwenza imali kwiwebhusayithi yakho ngentengiso ngokunjalo, indlela yokulungisa usetyenziso lwakho lweenjini zokukhangela kwaye ndikwenzele indawo yokukhangela abathengi bakho ukuze bakufumane. Ndiza kukufundisa indlela yokuthengisa isoftware yakho, ndibhengeze, ubhenele kubathengi abajonga iinkonzo zakho, uze wenze igama lakho kwi-Intanethi ngeendlela ezisele zikhona, azisebenzi kakuhle. Ndiza kukufundisa indlela yokugcina idatha yakho kwiikhompyuter zefu ezikusebenzele kwaye ugcine iifowuni zakho ngexabiso lezaziso kwiwebhusayithi yakho ekulaleni kwi-conch yeqhosha elikhuselweyo kuphela. Le ncwadi iya kugxila ekusetyenzisweni kokupapashwa nokusasaza imithombo yeendaba kwimali enkulu, ukusuka kwimifanekiso kwiifoto, isebenza kakuhle kuwe, kwaye ikwenza, kwaye ikwenzele isoftwe yakho ngeyona ndlela ilungileyo. Uya kufunda neengcebiso ezimbalwa kunye namaqhinga avela kum, kwiingcebiso ezikhoyo, amampunge efana ne-fakeup kunye nemodeli, eya kubaluleka, kwaye okunye, kuya kubaluleka, emsebenzini, okanye imali kunemali oyimfuneko. Le ncwadi ibizwa ngokuba "iyasebenzaIWebhu enzulu yokufunda kunye nokhuseleko ngomzekelo "ngesizathu: Ijongana nokufunda ikhowudi yokufunda, kwiCandelo lokuFunda, elisebenza ngendlela efanelekileyo yokulinganisa, ividiyo, ividiyo, intloko, neminye imisebenzi efana ne-metrics eqingqiweyo efakwe kwimifanekiso, njengohlobo lomfanekiso ofanayo, odluliselwe kwikhompyuter, kuba ikhompyuter yakho ibaluleke kakhulu xa inokuthi ikhuseleke ngenye indlela. Unokwenza ikhompyuter yakho Idla ngokukucela igama lomsebenzisi kunye nekhowudi yekhowudi, mhlawumbi ngophawu oluqinisekisiweyo kwisoftware yomntu ngamnye, kodwa eyokhuselo lwe-imeyile, okanye i-ofisi yefowuni, okanye nayiphi na indawo oyisebenzisayo). Nabani na okwakha isoftware eyi-MPECcably ekhuselekileyo inembono ethile yoko kuthetha ntoni. Isoftware ingonakali ngokwemvelo kuba izixhobo kunye neeakhawunti esizisebenzisayo ukufikelela azisoloko zihleli, zinokuba sezandleni zomntu one-gody yesoftware. Le yinto egxile kule ncwadi. Ikhompyuter eyenziwe ngekhompyutha ikhuselwe ngethokheni ende ende, ebizwa kunye ne-SSS okanye i-SSH iqhosha le-Shell, kuba iseva ye-Web, kuba iseva yewebhu, kwaye inika indawo yewebhu ye-ART ebaleka kwiseva ngokwayo. Umncedisi wewebhu unokufikelela kwisikhangeli sewebhu somsebenzisi, ephikisana nenxalenye yenxalenye yomsebenzisi, kuba yindawo apho umsebenzisi anokufikelela khona isoftware yenethiwekhi. Esi sixhobo sinokunikezela ngetekisi, iwebhusayithi oyibonayo, kwaye inakho ukurekhoda izixhobo ze-radial ze-risponder, kwaye zinokufunda kwaye zibhale kwi-Spip ye-Servial Amanani awodwa enziwe kwaye eqinisekiswe kwiseva yewebhu efakwe kwiwebhusayithi yewebhu efakwe kwiwebhu. Sebenzisa zonke izixhobo onazo, ngale ncwadi uya kuzixhobisa ngolwazi lokwakha iwebhusayithi ekhuselekileyo, kwaye iyonke yenkqubo yekhompyuter ekhuselekileyo esebenzayo, iyayijonga kwaye ibukeka kwaye ibukeka

Iqala phi: Wamkelekile ukutsiba i-qengqele le ncwadi ndiqala le ncwadi, okanye naliphi na icandelo, kwikhowudi ethethwayo, ingakumbi ukuba uchaza iinkcukacha kule ncwadi kunye nemizekelo esebenzayo yokusebenzisa. Ukuba awunamava kwikhowudi yokubhala, ndincoma kakhulu ukuba ufunde yonke le ncwadi, kwaye ucebise ukuba ufunde amacandelo angaphambili, ukuqinisekisa ukuba le ncwadi ilungile kuwe. Ukuba le ncwadi ayilunganga kuwe, cinga ngesibindi kumhlobo okanye kwisihlobo esinokuba nomdla wokufunda malunga nokuPhuhliswa kweWebhu ngokwazo zonke izinto endizilalayo phambi kwam. Qala apho uya khona, yonke inxenye yale ncwadi iya kuba luncedo ukuba unomdla wokwakha usetyenziso, kwaye uqwalasele ukuba ezona ndawo zilungileyo zakhiwe ngomsebenzisi wokugqibela: Yazi umthengi wakho. Ngoku uyandazi, uyayazi le ncwadi, kwaye ukulungele ukuqala. Ukuqala, ubambe ikhompyuter (nkqu nelaptopest ye-shoptop kwivenkile yebhokisi, iAmazon, okanye i-desktop indala, kwaye isebenze ngendlela esebenzayo kuwe.

Uyifunda njani le ncwadi: Isicatshulwa esibonisiweyo, sibonisa ukuba isicatshulwa sesikhohlisi somyalelo, uya kubhala ikhowudi oyibalekayo. Isikhawulezisi somyalelo sigxile kwi-keyboard i-bitch kwaye ifuna kancinci ukungacofa, ukukhawulezisa umsebenzi wakho kunye nokwenza izinto kube lula kuwe.

Ndiyaqalisa: Masingene ngaphakathi. Siza kuqala ngokwakha ikhowudi yomatshini wasekuhlaleni kwaye siqale ngaphandle kokwakha iwebhusayithi enxulumene ne-Intanethi. Oku kukhuseleke ukuqala, akukho nto, kwaye kulula kuwe. Kuxhomekeka kwinkqubo yokusebenza kwakho, ungene kwi-bash roll iya kuba yahlukile kancinci. Kwi-MAC OS, ndicebisa ukufakela umatshini obonakalayo kule nqanaba, njengoko uza kufumana olona matshini ukhohlakeleyo. Ababoneleli abahlukeneyo abanje ngebhokisi yebhokisi kunye neeparalell banokubaleka kumatshini obonakalayo kuwe, nangona kunokwenzeka ukuba ufake umbungu kumatshini, ukuba ukhetha ukusebenzisa imeko ye-timive ecetyiswayo ukuze kudalwe amava akhawulezayo, alungelelanise amava. Ukuba usebenzisa iLinux okanye iiwindows, endikucebisayo, kuya kuba lula ukwenza iprojekthi. Vula i-terminal yakho, lungisa ubungakanani njengoko ubona kufanelekile, kwaye uqala inyathelo 2. Ukuba usebenzisa iWindows, nceda ulandele inyathelo 1.

Inyathelo loku-1: - Abasebenzisi baseWindows kuphela KwiWindows, command command fitmer njengomlawuli kunye nohlobo I-WSL -inker

Inyathelo 2: - Qhubeka apha, okanye tyibilika inyathelo 1 ukuya apha ukuba awusebenzisi windows Kwisiphelo sendlela evulekileyo, (kuxhomekeke kwi-OS yakho, ebizwa ngokuba yi-UBUTU kwiWindows, i-terminal kwi-mac okanye i-linux, okanye igama elifanayo), qala ngokwenza iprojekthi. Oku sikwenza ngomyalelo we-mkdir, olwala isikhombisi. Ukuba ufuna ukwenza isikhombisi sokugcina iprojekthi yakho, ecetyiswayo, sebenzisa umyalelo weCD ukutshintsha kulawulo kwaye kwaye

I-CD / Sendleleni / kwi-Colaritory-Indlela ye-imeyile (iifayile) ezigqithileyo, indlela yakho emiselweyo i-~ okanye / ikhaya / igama lomsebenzisi (apho igama lomsebenzisi legama lakho lomsebenzisi). Ukutshintsha kolawulo olungagqibekanga, uhlobo lweCD okanye CD ~ I-MKDIR Umzekelo-Guqula "Umzekelo" ngegama lolawulo

Ngoku unesikhokelo sokusebenza kweprojekthi yakho. Ukuba yinto ebaluleke kakhulu yokuba lelokho igcinwe kwimeko apho kufuneka utshintshe umatshini owahlukileyo okanye ubhengeze ikhowudi oyibhalayo, siya kwakha iskripthi sakho sayixhasa. Kodwa ukwakha iskripthi kuthatha ikhowudi encinci, kwaye ikhowudi kufuneka ibe yenziwa ngendlela efanelekileyo. Ke masikhe isicatshulwa sokwakha izikripthi kuqala. Masiqale ngokudala iskripthi kwaye iyenza iphumelele. Siza kusebenzisa iSudo, chmod kwaye ndichukumise le, kwaye ndibize iscript ".

sudo touch /usr/bin/ascript
sudo chmod a+x /usr/bin/ascript
sudo nano /usr/bin/ascript

Ngoku siyenzile iScripkt, yayenza yayiphumeza, kwaye ilungele ukuyilungisa. I-Nano ngumhleli ongumbhalo oya kukuvumela ukuba uhlela isicatshulwa ngaphandle kokucofa, kulula kakhulu kunokusebenzisa imbonakalo yabasebenzisi. Ukuhlela ifayile ne-nano, sebenzisa i-nano kunye nendlela eya kwifayile. Ukwenza iskriptri eyenza iskriptri, kuyafana nokwenza iskripthi sethu kuqala. Siza kusebenzisa le khowudi ingentla, endaweni yegama leskripthi, Oku kusivumela ukuba sibize iskripthi ngokuchwetheza nje i-sudopript ye-sudopript, apho sinokwenza nayiphi na iskripthi esitsha ngokutshintsha "ngegama leskripthi sakho. Ikhowudi e-Nano kufuneka ibonakale ngathi:

sudo touch /usr/bin/$1
sudo chmod a+x /usr/bin/$1
sudo nano /usr/bin/$1

Kwaye ukuvala i-nano, sinokubamba isitshixo sokulawula kwaye sicinezela u-X, emva koko y Ukuchaza ukuba siyayigcina ifayile, kwaye sibe nokubuya. Ngoku endaweni yokuchwetheza le miyalelo mithathu ukuba ihlele iskripthi, siya kuba nakho ukuchwetheza i-sudo mafundele i-sudo apcript kwakhona. Oku kusebenza! Kwaye nayiphi na iskripthi esitsha sinokuqhuba ngokulula ngokubiza kwiqokobhe. Masiwusindise umsebenzi wethu ngoku: Masibhale Isiskripthi esisemva ukuze sigcine iscript yethu entsha kwaye emva koko siyibuyisele kulawulo lwethu lweprojekthi, ngelixa ixhasa iskripthi esisemva.

sudo ascript backup

Ngoku, eNano:

sudo cp /usr/bin/backup /path/to/directory/
sudo cp /usr/bin/ascript /path/to/directory/

PHI / INDLELA / UMPENDULO yindlela eya kwiprojekthi oyenzileyo nge-mkdir. Emva kwexesha siza kufunda indlela yokuphindaphinda iindlela ezinje ngeloop kunye noluhlu, eyikhowudi encinci, kodwa ngoku masiyigcine ilula kwaye inemigca embalwa. Ukuqhuba le ncwadi iskripthi kwaye ugcine ikhowudi yakho, gcina ifayile e-Nano ngolawulo + x, y kwaye ubuye, kwaye uchwetheze apha ngezantsi kwiqokobhe lakho

backup

Ukuba ushukunyiswa kwi-password yegama eligqithisiweyo ngelixa ufunda le ncwadi kwaye ulandele iqokobhe, nceda ufake iphasiwedi yakho yomsebenzisi ngokuchanekileyo, uya kuba neempawu ezintathu ngaphambi kokuba uqaphele kwakhona. Ungasebenzisa iintolo ezinyukayo ukuya ezantsi kwimiyalelo yeRerun kwaye uzihlebeze, kufuneka usebenze nantoni na kabini. I-Elula Cinezela phezulu kwaye Phantsi

Sivuyisana! Ukwazile ukwenza iskripthi esimangalisayo esibuxhasa izikripthi ezimbini ezibalulekileyo zeqokobhe kwisalathiso sakho esisebenzayo. Singashukumisa izinto emva kokuba iprojekthi ikhululekile, kodwa oku kusebenza ngoku. Masiqhubeke siye kwilifu, siza kusebenzisa i-gittib ngale nto (nangona kukho ezinye izisombululo ze-git, nangona kunjalo sinokwenza ukuba ukhuphele iikopi zesoftware okanye isitshixo. Ibalwa e Gcina isoftware yakho, ngakumbi njengoko sifudukela kwi-Linux kwiimeko ze-Linux ukuba ngamanye amaxesha ziyahlukana ngelixa ikhowudi yakho ingabi nakufumana ithuba lokuyifaka ngokuzenzekelayo, esiya kugubungela.

Ukuba awukasebenzisi umatshini obonakalayo we-Ubuntu kule nqanaba, ndiphinda ndenze umatshini we-UBUTU kule ndawo kuba iya kwenza ukuba ubomi bakho bube lula xa kuthelekiswa zonke iiphakheji ezifunekayo ukuze kusebenze imisebenzi yokufunda ekhompyuter yakho kwikhompyuter yakho. Siza kuhambisa ikhowudi kwiseva yeWebhu kwixa elizayo, kodwa sifuna ukuqiniseka ukuba kukho okungenani indawo embalwa yokhuseleko emva kweseva yethu yewebhu enganyangeki ukwenza oku. Ukuba usafuna ukusebenzisa i-MAC OS, Wamkelekile ukukhangela kwaye wafaka iipakethi eziyimfuneko kwi-intanethi, kodwa kusenokungabikho ezinye iindlela zepakeji nganye okanye uthotho.

Masidibanise imiyalelo embalwa yokwenza umsebenzi wethu ngeskripthi se-backup ngokuqhuba i-Sudo Andript yeSude.

# ...

Kwakhona, ukulawula i-X ukugcina.

Ngoku kufuneka senze okunye ukuhlengahlengiswa kwexesha kule projekthi. Kuba kungekudala iya kuba yiprojekthi ye-git, akufuneki ukuba sichwetheze yonke imiyalelo ngalo lonke ixesha sibeka kwindawo yokugcina i-git, kodwa siyakufumana isikhephe sale xa sibhala izikripthi zethu zokuhambisa. Ukuqala, masiqinisekise ukuba sikwindawo elungileyo kwaye siqale i-git repository kwaye sivelise amaqhosha eSsh.

cd /path/to/directory
git init
git branch -m master
ssh-keygen

Emva kokuba sichwetheze i-ssh-isshgen, isitshixo esitsha kufuneka sigcinwe kwifolda yasekhaya phantsi kwefolda ebizwa .SSh. Ibizwa ngokuba yi-ID_RSA.PUB. Masifumane le qhosha kwaye ikopi. Ukuyibona,

cd ~
cat .ssh/id_rsa.pub

Khuphela umbhalo obuyisiweyo ngumyalelo wokugqibela, kwaye wenze iakhawunti ngomboneleli wakho we-GIT (nge-gitib), ngaphambi kongeze iqhosha le-SSS kwiakhawunti yakho. Nje ukuba une-akhawunti, cofa kwimenyu ephezulu ngasekunene kwaye ufake useto, ngaphambi kongeze iqhosha lakho le-SSS kwi-SSSS kwimenyu. Khetha Faka isitshixo se-Ssh kwaye wongeze eyakho ngokudibanisa kwaye unike isihloko, ngaphambi kokuba songa kwaye ubuyele kwi-GitIKI ukuze wenze indawo entsha. Oku kuyafana nabanye ababoneleli nge-git, kuya kufuneka ufunde amaxwebhu abo. Kwisimo esitsha sokugcina izinto, sinika indawo yakho yokuchaza igama elichazayo kwaye uthathe isigqibo sokuba uyafuna ukuyipapasha, kwaye uqiniseke ukuba uhlengahlengisa iifayile zokwabandakanywa. Nje ukuba indawo ye-repositotity yenziwa, kOpe i-clone nge-irsh URL, kwaye uyincamathisele lo myalelo ulandelayo.

git remote add git://… (your remote URL)

Ngoku ungabuya umva kwindawo yakho yokugcina i-DED, uya kuqhelana nale nto. Zama iskripthi sakho se-backup ngoku nge-backup

Kakhulu! Ngoku sinokuyifumana nyhani. Masifake i-django ngoku ukuba siyiqonde kakuhle kwi-bash kunye ne-git. I-DJOMO iya kusibuyisela ngokuzenzekelayo isoftware yethu, i-Bash inokukwenza oku kodwa iDjango kufanele ukuba ibe nokuphunyezwa ngokulula (kunokuba kukhubazeka kwaye kulungiswe ngokulula).

Ukufaka isoftware e-Ubuntu, siya kusebenzisa umyalelo weSUDO APT. Okokuqala, masihlaziye kwaye siphucule isoftware esele inayo. Oku kungenziwa nge-sudo apt-Fumana uhlaziyo kunye ne-sudo apt-phucula -y. Okulandelayo, masifake iPython kunye nendawo yethu ebonakalayo, ikhaya lekhowudi yethu, ngalo myalelo ulandelayo: sudo opt-prot-prot-ppy3 Python3 Python3-ven

Yiyo yonke le nto kufuneka ihambe ne-django ngokwakho ukufaka isoftware kwimodeli yobuntu. KwiWindows neLinux Oku kufanele ukuba kube ngokuchanekileyo, kodwa kwi-MAC unokufuna ukufaka umatshini obonakalayo kunye ne-linux kuyo usebenzisa i-SECHEIBE ye-SHITTTOXOLTOXOLTO YOLWAZI LOKUGQIBELA OKANYE UKUHLAZIYELA AMANQAKU APHA KUFUNEKA UZE UZE UZE UZE USETYENZISE IXESHA LOKUGQIBELA. Ubuntu bubaluleke kakhulu kweli tyala kuba yisoftware iiwebhusayithi eziqhutywa kwaye zibavumela ukuba bazibambe iiwebhusayithi nazo zonke isoftware esele ikhankanyiweyo.

Masimba ungene kwi-DJOM.

Kwincwadi yethu kwakhona, nge-CD:

python -m venv venv # Yenza imeko ebonakalayo apho ikhowudi igcinwe
source venv/bin/activate # Yenza ibala lendalo
django-admin startproject mysite . # Apho mysite yiprojekthi endiqala kuyo kulawulo lwam lwangoku.

I-DJONO ifumana nje ukuqala kwethu, kuba uDjango ubamba iseva yewebhu kwaye esenza yonke into esiyifunayo ukufumana iwebhusayithi yendawo esisiseko kwaye isebenza. Ngoku ekubeni sifakwe i-DJONO, masihlele iisetingi kancinane ukwenza ukuba isebenze ngendlela esiyifunayo. Okokuqala, masidala i-app entsha

python manage.py startapp feed

Uya kuqaphela i-app yokuqala ibizwa ngokuba yiyondliwa. I-APP kufuneka ibizwe nantoni na oyithandayo, kwaye siya kudala usetyenziso olutsha, kodwa igama le-app kufuneka lihambelane ngalo lonke ixesha i-app ibhekiswe kwikhowudi. Ukongeza i-app entsha, siya kuhlala sihlela useto.py kwinye i-APPORGE i-APP enziweyo, egama libhalwe ekuqaleni Usebenzisa i-nano,

nano app/settings.py

Kwiseto, fumana ifakiwe_Apps kwaye yahlula [] imigca emi-3. Sebenzisa izithuba ezine kumgca weziko elingenanto, ukongeza 'ukondla', okanye igama le-app yakho. Eli candelo leseto.py kufuneka libonakale ngathi:

INSTALLED_APPS = [
    'feed',
]

Ngaphambi kokuba silibale, masivavanye ukuba uDJONI uyasebenza. Sebenzisa i-Python yomyalelo wePython.py i-0.0.0.0.0.0.0.0000, sinokuqhuba kwisikhangeli sewebhu (isebenza khona;)

Ngoku, masimba ekubhaleni ikhowudi ethile yePython. I-Djengo inamacandelo amathathu aphambili, bonke baqhutywa yikhowudi ngokupheleleyo. Amacandelo abizwa ngokuba yimodeli, ukujonga kunye netemplate, kwaye nganye ikwinqanaba eliphezulu nelisezantsi ngokwahlukeneyo ngaphambi kokuba iphepha lewebhu lisiwe kumsebenzisi.

Imodeli yikhowudi egcina ulwazi kwindawo yedatha yokubuyisa, ukubhekiswa nokunikezelwa.

Umbono uthatha isigqibo sokuba imodeli eguquliweyo njani, edityanelweyo, kwaye iguqulwe, phantse lonke umbono uza kusebenzisa imodeli ngqo.

Itemplate yikhowudi ye-HTML kunye neentsimbi ezongeziweyo kunye neempempe ezibizwa ngokuba ziilwimi zetemplate. Itemplate inikezelwa luluvo apho luzaliswa yiKhowudi yePython kunye nomxholo onjengeemodeli kunye nolwazi (iintambo ze-USUAR (iintambo ze-USUAR (iinombolo zenani) kwimbonakalo.

I-DJONO inamanye amacandelo nawo, kubandakanya kodwa engaphelelanga kuzo:

Useto, olucwangcisa usetyenziso njengoko sithethe.

Ii-URL, eziziipatheni ezilandela umsebenzisi ukuba zifumane ukufikelela kwiinxalenye ezithile zesicelo sewebhu.

Iifom, ezichaza indlela ulwazi oluthunyelwe ngayo kwiseva lusingathwa kwaye lunikezelwe kwiziko ledatha kunye nomsebenzisi. Esi sisiseko sengcaciso yokufezekisa icala leseva, kwaye sinokwamkela naluphi na uhlobo lolwazi lweevenkile zekhompyuter, uninzi lweentambo, iinombolo, kunye ne-booboas eziyinyani (zihlala ziyinyani).

Iitemplate, ezikwikhowudi ye-HTML kunye nolwimi lwetemplate kwaye itshati phakathi kwePython kunye neKhowudi ye-HTML enokufikelelwa kwiwebhu kwaye iluncedo kwiinjongo ezahlukeneyo ezingafuneki ukuba zisondele kwiseva.

Iifayile ze-static, ezihlala zihlala iJavaScript kunye namathala eencwadi asebenza kuyo kwaye zidityaniswe netemplate.

Iifayile zeMedia, i-server isebenza okanye igcinwe ngaphandle, okanye ibhaliwe kwiseva ngaphambi kokuba igqitywe kwaye ithunyelwe kwenye iseva (ibhakethi) yokusingathwa.

I-Middlere, eyenziwe ngamaqhekeza ikhowudi eqhutywa ngaxeshanye njengezimvo kwaye ithathelwa ingqalelo "ibandakanyiwe" kwimbonakalo.

Iiprosesa zoMxholo, ezenza inkqubo yembono nganye kwaye isetyenziselwa ukongeza imeko eyongezelelweyo.

Iimvavanyo, ezinokuqinisekisa ukuba umsebenzisi okanye isicelo sidlulisela iimfuno ezithile ngaphambi kokuba umbono unikezelwe.

Abathengi, abayalela ukuba iiwebhusayithi zewebhu ziphatha njani kwaye ziphendule kunxibelelwano.

Umlawuli, osetyenziselwa ukubhalisa iimodeli ukuze zisetyenziswe ngokweenkcukacha kwiPhepha lolawulo lweDjango, apho ugcino lwedatha lunokulawulwa nge-program interface.

I-celery, echaza imisebenzi ye-Asynchnous yeKhowudi yeDjango inokuqala ukusebenza ngaphambi kokuba iqhubekeke kwangoko kumsebenzi olandelayo okanye kumgca wekhowudi.

UDJAngo unokuba nezinye izinto ezininzi, esiya kuthetha ngazo ngokweenkcukacha apha. Zininzi iindlela zokwenza i-Djengo isebenza ngakumbi, yongeza iwebhusayithi, ezikhawulezayo, zilungelelanise imisebenzi yesoftware, kunye nenjongo yokujonga, apho uninzi lweKhowudi luyenziwa. Jonga imisebenzi yeyona nto iphambili kuba zihlala zibhengeza iqhekeza lekhowudi ekhethekileyo kwipateni ethile ye-URL, okanye icandelo leseva.

Okokuqala, masiphonononge imisebenzi yokujonga. Jonga imisebenzi iqala ngemvumelwano yokubonisa ikhowudi eya kusetyenziswa kwimbonakalo, kwaye ichazwa kusetyenziswa iinkcazo okanye iiklasi zomsebenzi. Iimbono ezilula zichazwa yiNkcazo yeMisebenzi, kwaye zibuyise ii-httprentresponsespy ngetemplate esisiseko. Masiqale ngokuchaza umbono osisiseko wokubuyisela isicatshulwa "Molo". Khumbula ukuba ixesha ngalinye ukongeza ikhowudi emva kwengxelo, ukuba, ngelixa, kuba, njl njl, kuya kufuneka ukongeza izithuba ezi-4 kwiNkcazo nganye ongathanda ukuyisebenzisa emsebenzini wakho. Siza kufumana le nto nganye ethile kungekudala.

Ukusuka kwisalathiso sendawo yethu, hlela ukutya / ifayile.py.py Ifayile usebenzisa i-nano kwaye wongeze le migca ilandelayo ukuya esiphelweni sefayile.

from django.http import HttpResponse

def hello(request):
    return HttpResponse('hello world')

I-djengusponse ye-DJOOM iphendula ngentambo yombhalo, ibonakaliswe kukuvula nokuvala '. Ngalo lonke ixesha udlulisa ulwazi kumsebenzi okanye kwiklasi, njengesicelo okanye umtya, kuya kufuneka usebenzise umzali (, ukuvula nokuvala).

Ayiziyo yonke le nto ekufuneka siyibone umbono wethu okwangoku. Ewe kunjalo, asikhange sixelele iserver apho umbono unjalo, kusafuneka sichaze indlela apho umbono kufuneka unikele khona. Masiqale ngokuchaza indlela esisiseko kwi-APP / URLS.UP, kwaye siya kungena kumaqela endlela kamva.

Kwi-APP / URLS.PY, ukongeza umgca emva kweengxelo zokungenisa emva kokungenisa umbono esiwenzileyo.

from feed import views as feed_views

Ngoku, masichaze iphethini yokujonga. Jonga iipateni zinezinto ezintathu, icandelo leNdlela, elixelela i-server apho umbono ukhona, inqaku le-IRL apho i-template yolo mbhalo khona inokuthi ifumaneke kwaye ihlaziywe ukuba kukho imbono enye okanye ithathe igama elichanekileyo. Kuyavakala ukwenza izinto ngale ndlela kwaye zibeguquke, kuba ikhowudi yakho iya kuba yinto eguqukayo etshintshayo efuna ukuba bhetyelwe kwaye iphuculwe ukuze ixabiseke kwaye kulula ukusebenza nayo. Nantsi into eya kujongeka njani umbono wakho, ungongeza oku kwii-URLPATNS = [Icandelo le-App / Urls.py. Ipateni yokujonga ichazwa kunye nezi zinto zintathu zichazwe apha ngasentla, kunye nomsebenzi obiziweyo. Iipateni zakho ze-URL luluhlu, ke qinisekisa ukuba uhlala uphelisa into nganye kuzo ngekoma, kuba oku kwahlula umntu ngamnye. Into nganye kufuneka iqhubeke nomgca omtsha, kwakhona ngezithuba ezine phambi kwawo, kanye njengokuba i-app kwisetingi. Siza kuchaza icandelo lokuqala lombono ngomsebenzi ongenanto, ukuze kudalwe umbono oqhuba ulawulo lweengcambu zeseva yewebhu. I-URLS.PE yakho mayibonakale ngoluhlobo:

from feed import views as feed_views

urlpatterns = [
    path('', feed_views.hello, name='hello'),
]

Esi sisiseko sokwenza iwebhusayithi kunye ne-DJONO EYIYO NGOKUGQIBELA. Ukwenzela ukuba wenze iwebhusayithi eguqukayo ngakumbi apho sinokuqalisa ulwazi, njengemifanekiso, iividiyo, ividiyo kunye nangaphezulu, kuya kufuneka sisebenzise iimodeli, esiya kuphononongwa ngokulandelayo. Okwangoku, makhe sijonge ikhowudi yethu kwaye sibaleke iseva. Ukujonga ikhowudi yeempazamo, ukubaleka:

python manage.py check

Ukuba kukho nayiphi na imiyalezo yempazamo, kufuneka uphonononge ngononophelo utshintsho olwenzileyo kwi-app yakho kwaye ubone ukuba ikhona into ekufuneka uyilungisiwe, njengendawo eyongeziweyo, i-typo, nayiphi na into esuswe ngengozi. Ukufundwa kumyalezo wemposiso (ukuba unayo), kuya kufuneka ukwazi ukubona indlela eya kwifayile oyidalileyo okanye ihleliwe kunye nenombolo yomgca, jonga ukuba ungalungisa nantoni na ekhoyo. Ukuba uwulungisile umba, qhuba le myalelo ingentla kwakhona. Xa isoftware ilungele ukuqhuba kwaye iyasebenza, uyakubona iziphumo "zokuphuma kwenkqubo zichonge izinto." Ngoku ulungele ukuya. Qhuba iseva nge:

python manage.py runserver 0.0.0.0:8000

Ngoku vula ibrawuza yewebhu kwaye ungene kwi-http ukuya kwi-http: // indawo yendawo: 8000. Kuya kufuneka ubone isicatshulwa sibuyiselwe kwi-Gredhesis kunye neeNgcebiso ze-HTTPERSPOPSEPOPS kwimbonakalo yakho. Lo ngumzekelo nje obalulekileyo, kodwa ukuba uyenze le nto, uyaqonda iziseko ze-liux, i-bash, python, kunye ne-django. Masimba nzulu kwimodeli yedatha, kwaye uphonononge amandla eklasi yePython ekugcinweni kolwazi. Emva koko, siya kuqalisa ukufumana i-HTML kunye ne-CSS ngaphambi kokuba senze indawo yethu sibhalwe ngokupheleleyo, siguquguquka kwaye sikhuseleke kusetyenziswa iJavaScript kunye nomatshini.

Iiklasi zigcinwa kwimodeli.py ye-app yakho. Ukusebenzisa i-nano, hlela i-app / model.py kwaye yongeze iklasi entsha. Iklasi ichazwa nenkcazo yeklasi kwaye idluliselwa i-superclass ukuba ilifa le-ilitha, kule mizekelo.model. Igama leklasi iza emva kwenkcazo yeklasi, kwaye emva kwencwadi yeklasi A: (Colon) isetyenziswa, ngaphambi kokuba ichazwe kwi-Classitions ibotshwe apha ngezantsi. Iklasi yethu ifuna i-id sinokuyisebenzisa ukuyifumana kwaye ihlale ihlukile, kwaye ikwafuna intsimi yokubhaliweyo ukugcina ulwazi oluthile. Emva kwexesha sinokongeza umthi wexesha, iifayile, i-booleans (inkcazo eyinyani okanye inyani enokunceda iKhowudi, kwaye inokusetyenziselwa ukulilungisa imodeli yomsebenzisi ungene kwiseva, nangaphezulu. Masikhuphe ikhowudi engezantsi:

from django.db import models # Ukungenisa okusetyenziselwa ukuchaza iklasi yethu kunye neempawu
class Post(models.Model): # Inkcazo yeklasi yethu ngokwayo
    id = models.AutoField(primary_key=True) # I-ID yemodeli yethu, isitshixo semveliso esivela ngokuzenzekelayo siya kusivumela ukuba sikwazi ukubona imodeli, sigcine sahluke, kwaye siluncedo xa kufuneka senziwe ngemodeli xa sele yenziwe.
    text = models.TextField(default='') # Uphawu lwevenkile yethu, kule meko, itekisi, ukusilela kumtya ongenanto.

Vala kwaye ugcine ifayile njengoko sele siyenzile ngaphambili ukugqiba.

Zininzi ezinye iinkalo kunye nokukhethwa siza kuphonononga xa sihlaziya le klasi njengoko i-app yethu ivele, kodwa le yeyona nto ibalulekileyo yokudala i-app ukuthumela i-app ukuthumela isicatshulwa. Nangona kunjalo, le modeli ayizukusebenza yedwa. Njengoko kuchaziwe ngaphambili, siya kufuna umbono wesiko kunye nepateni ye-URL yesiko ukwenza lo msebenzi wemodeli, kwaye siya kufuna nefomathi kunye netemplate. Makhe sihlolisise ifom kuqala.

Ukuchaza ifomu, hlela i-APP / Iifom.py nge-nano kwaye wongeze le migca ilandelayo. Siza kufuna izinto ezimbini ezingenisayo, iifom zethu zefom, kunye nemodeli esiyidalayo (yokondla.models.podels.podel.podel.podels.podels.podel.podels.podels.podels.podels.podels.podels.podels.podels.podels.podels.podels.podels. Le fom ikwanokuba nomsebenzi wokuqalisa okwenzayo ngokusekwe kulwazi kwisicelo, imodeli okanye ngenye indlela, siya kuphanda kamva.

Iifom zemodeli ziluncedo kakhulu kuba zinokwenza imodeli okanye zihlele imodeli, ngoko siya kuzisebenzisa zombini. Masichaze enye kwiifom.py ngezantsi.

from django import forms
from feed.models import Post

class PostForm(forms.ModelForm):
    text = forms.CharField(widget=forms.Textarea)
    class Meta:
        model = Post
        fields = ('text',)

Esi sisiseko sendlela yefom kunye nemodeli ibukeka ngathi inje. Le fomu yemodeli ingasetyenziselwa ukonakalisa okanye hlela isithuba, sitshintsha isicatshulwa esiqulethe. Siza kujonga ukudibanisa le fomu ibe ngumbono olandelayo. Okokuqala, masenze ukufuduka kwaye sifuduke idatha yedatha ukuze ikhowudi yethu inokunxibelelana nemodeli xa ibaleka. Ukwenza oku, sebenzisa le miyalelo ilandelayo:

python manage.py makemigrations
python manage.py migrate

Oku kuyakuthatha umzuzu ukwenza, kodwa xa sele kube kwenzeka, kuya kukuvumela ukuba ufikelele kwimodeli kwizimvo, i-Middleyarer, okanye kwenye indawo kwisoftware. Masiqhubeke ngokwenza umbono apho sinokuyibona khona imodeli yethu. Hlela ukondla / izimvo.py kwaye wongeze le khowudi ilandelayo, njengoko kuphawuliwe. Akuyi kufuneka wongeze nantoni na emva kophawu # umqondiso, le khowudi isetyenziswayo ukubonisa ulwazi malunga neKhowudi. Siza kuqala ngokungenisa imodeli yethu kwizimvo, kwaye sisongeze kwimeko apho sinokunikezela kwi template njengoluhlu lokubonisa. Okulandelayo, siya kongeza itemplate apho singanikezela khona ifomu kunye nemodeli ngeqhosha ukwenza into entsha esekwe kwimodeli kwaye ithumele kwiseva. Oku kuvakala kunzima, ngoko masenze nje inyathelo ngenyathelo. Ngaphambi kokuba sigqibe imbono, masize senze itemplate enikeza imodeli kwaye uqiniseke ukuba siyayibona ngokwenza iposti entsha kwiqokobhe elitsha. Nantsi indlela umbono ekufuneka uyijonga ngayo:

    posts = Post.objects.all() # Umbuzo kuzo zonke izithuba kwiziko ledatha ukuza kuthi ga ngoku

Zonke ezi zinto zibonakala zilula zilula side sifike ezantsi. Ukunikezelwa, ixabiso elibuyiselwe ngumsebenzi endaweni yempendulo ye-HTTP elifana nomzekelo odlulileyo, lihlala lithatha isicelo njengokufaka ipromplethi ye-template), kwaye ibuyise itemplate echazwe kulo msebenzi. Itemplate izakuba luxwebhu lwe-HTML kunye nolwimi olubizwa ngokuba yiJinja2, olunika ulwazi lwePython kwi-HTML.

Ukuqala ukudala iitemplate, yenza izikhombisi ezibini ekondleni.

mkdir feed/templates
mkdir feed/templates/feed

Okulandelayo, hlela itemplate kwikhomputha ngasentla, ukondla / mphutyana / ukondla, ukongeza ikhowudi ngalo mzekelo. Makhe sijonge itemplate ngalo mzekelo.

Le yitemplate elula kakhulu. Ichaza ukuvulwa kweethegi ze-HTML, ithegi yohlobo loxwebhu, ithegi yomzimba ene-thegend, ithegi yekhefu eyongeza umgca omncinci kwiscreen, kunye ne-Lop enikezela iposti nganye kuluhlu lwe-template. Yiyo yonke le nto ithatha ukunikezela ngeeposti, kodwa akukho datha okwangoku. Masenze i-Shell. Singayiqhuba igobolondo ngolawulo.py

python manage.py shell

Ngoku, masingenise imodeli yethu yeposi

from feed.models import Post

Okulandelayo, siza kudala isithuba esilula ngomtya kwaye uphume kwiqokobhe. Umtya unokuba yiyo nantoni na, ukuba i-IT-itekisi esebenzayo.

Post.objects.create(text='hello world')
exit()

Okokugqibela, kuya kufuneka songeze ipatheni ye-URL yokutya kwethu. Kuba i-opp yethu yokondla iya kusebenzisa ii-URLs ezininzi kwaye sifuna ukugcina ubungakanani bezezimali ezincinci, masidala ii-URLs.py yendawo kwi-App yethu yokondla ejongeka ngolu hlobo:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.feed, name='feed'),
]

Kuya kufuneka sihlele i-URLS.PY kwi-app iseke, nokuba yintoni esigqibe kwelokuba asitsalele umnxeba, olu yayilulawulo lokuqala esilutyile. Hlela usetyenziso / App.py kwaye wongeze oku kulandelayo kwiipateni ze-URL

from django.urls import include # ngaphezulu
    # ... Ikhowudi yangaphambili apha

Ngoku, xa siqhuba iseva kunye nePython Little. Emva koko, masiphumeze ifom esidale kwaye siqale ukudala izithuba zethu. Kodwa ngaphambi kokuba sibhale iKhowudi eninzi kakhulu, masenze i-backup usebenzisa i-Script esiyibhale kwangaphambili, i-backup. Qhuba le i-script kwiqokobhe, linda imizuzwana embalwa, kwaye yonke ikhowudi iya kubuyiselwa kwindawo yethu ye-GIT.

backup

Ukuphunyezwa kwefom kulula. Siza kungenisa ifom yethu, yongeza isicelo seposi kwimbonakalo, kwaye songe isithuba kwindawo yogcino-nkcukacha ngaphambi kokuba usebenze kwakhona kwimbonakalo enye. Singasebenzisa umsebenzi wokudluliselwa esisele singenisiwe, kwaye omnye umsebenzi obizwa ngokuba yi-reserd ukufumana i-URL yepateni yokujonga. Siza kuwuphathela le nto ngentambo 'ukondla' kuba ithespa yegama lemodeli efakiweyo yondla, kwaye umbono nako kubizwa ngokuba kukutya.

    posts = Post.objects.all() # Umbuzo kuzo zonke izithuba kwiziko ledatha ukuza kuthi ga ngoku
    if request.method == 'POST': # Phatha isicelo seposi
        form = PostForm(request.POST) # Yenza umzekelo wefom kwaye ugcine idatha kuyo
        if form.is_valid(): # Qinisekisa ifom
            form.save() # Gcina into entsha
        return redirect(reverse('feed:feed')) # Thumela i-URL efanayo ngesicelo sokufumana
        'form': PostForm(), # Qiniseka ukuba udlulisela le fomu kwimeko ukuze sikwazi ukuyinikezela.

Ngoku, siyakufuneka sihlaziye itemplate ukuze iphendule kwifom entsha. Singayenza le nto ngokusebenzisa i

I-tag kwi-HTML kunye nokunikezela ngefom kwitemplate ye-HTML ngeqhosha lokungenisa. Siza kudinga ithokheni ye-CSRF, ithokheni ethintela indawo zangaphandle ukuba ikhuphele kwifom ngaphandle kokulayisha iphepha.

Masipheke phantsi. Kukho iklasi entsha yefom, ithokheni, ifom ngokwayo, kunye neqhosha lokungenisa. Ilula, kodwa xa siyijonga, singafuna ukuyenza ibonakale ilunge ngakumbi. Iyasebenza, sinokuthumela izithuba ezitsha kunye nefom kwaye ngoku zigcinwe kwindawo yedatha. Kukho izinto ezimbalwa eziqhubeka apha. Sisebenzisa iithegi ze-HTML ukubhengeza ukuba uxwebhu luxwebhu lwe-HTML, sisebenzisa ithegi ye template ({% ...%}) ukunikezela ngophawu lwefom, kunye {} ukuya kwifom. Sikwanayo i-loop yokunikezela isicatshulwa usebenzisa iithegi zebhloko kunye nethegi yetemplate. Iimpawu zebhloko zibaluleke kakhulu kuba sinokuchaza indlela amacandelo etemplate enikezelwa ngayo, kunye neethegi zetemplate sisiseko sendlela esizibeka ngayo kwikhowudi yethu.

Ngoku kufuneka senze i-app yethu ibukeke ilunge ngakumbi, kuba ngoku ijongeka isisiseko. Singayenza le nto ngokusebenzisa i-CSS, nokuba i-inile, okanye kwiiklasi eziboshwe kwinto nganye. I-CSS imnandi kakhulu kuba ixelela yonke into kwiphepha ukuba ifanele ijonge njani, kwaye inokwenza ibonakale ilungile. Kukho amathala eencwadi ambalwa anokukwenza oku, kodwa umntu endiya kuye ukuba i-bootstrap.

I-bootstrap inokukhutshelwa kwiwebhusayithi yabo,I-Gobootstrap.com/. Kanye xa, cofa iqhosha ukuze ufunde amaxwebhu okufaka, kwaye ukhuphele ikhowudi kubandakanya icandelo le-CDN. Uya kuyidinga le khowudi phezulu koxwebhu lwakho lwe-HTML, kwithegi ebizwa ngokuba yintloko. Kwakhona, masiqhubeke kwaye sizenze itemplate yesiseko ukuze singadingi ukuba siphinde saphindaphindeka ngolu nxibelelwano kwitemplate nganye.

Yenza ulawulo olutsha olubizwa ngokuba ziitemplate ngeetemplates ze-MKDIR, kwaye emva koko hleze iitemplate / isiseko.html.

Imele ibonakale ngoluhlobo:

Qiniseka ukuba ukukopa i-CSS kunye neJavaScript, i-.css kunye neefayile zeJavatsi, kuba siyakufuna iJavaScript ukwenza umsebenzi wethu ngakumbi kwixesha elizayo.

Ngoku, masibuyele kwi-bash roll kwaye sibaleke umyalelo okhawulezayo. Khumbula, ukuba uhlala ufuna ukufikelela kwindalo ebonakalayo, uhlobo lohlobo lweVenv / Bin / Vula. Oku kuya kukuvumela ukuba ufake iiphakheji zePython ekuhlaleni ngendlela evumela uDjengo. Ukunika iifom zethu ezivezwe ziiklasi ze-bootststrap, siya kusebenzisa iphakheji ye-python ebizwa ngokuba ziifom zeCrispy. Singayikhuphela le nto ngomyalelo olandelayo

pip install django-crispy-forms

Nje ukuba ifakiwe, yongeza kwiseto.py

    # ... Ikhowudi yangaphambili apha

Ngoku, buyela kwitemplate yethu yokondla, sinokushenxisa ezinye izinto. Masisuse isiqalo nokupheliswa koxwebhu kwaye siyitshintshe ilifa elivela kwitemplate yethu yesiseko, usebenzisa inkcazo yebhloko. Kwakhona, siya kongeza icebo lokucoca itemplate yokungenisa nomthwalo kunye nefilitha yetemplate kwifom. Okokugqibela, masingeze iklasi ye-bootstrap kwiqhosha lefom ukwenza ukuba ibonakale ifana neqhosha. Oko kuya kujongeka ngoluhlobo:

Entle! Yinto encinci yekhowudi. Okulandelayo, kufuneka siyivavanye kwaye siqinisekise ukuba siyabona ukuba yonke into ibonakala intle, kwaye iqinisekile ukuba yonke into isebenza ngokufanelekileyo. Qhuba iServer ngokwemiyalelo yangaphambili kwaye uqiniseke ukuba indawo ijongeka kwaye isebenza ngoku. Umsebenzi omhle kakhulu! Ulungele ukuqhubela phambili kwinqanaba elilandelayo, esiya kongeza ukusebenza kwemvume yomsebenzisi usebenzisa ii-URL ezifanayo, iifom, iimbono kunye neetemplate. Itemplate yesiseko ibalulekile, kwaye siya kuqhubeka siyiguqula kwaye senze utshintsho njengoko kufuneka sikhuseleke kwigama lomsebenzisi kunye nendawo yethu ebalulekileyo eya kuthi ikhuseleke kuphela nguwe.

Ukwenza oku, kuya kufuneka sisebenzise imodeli yomsebenzisi eyakhiwe kwiDjango. Imodeli yomsebenzisi yimodeli yedatha, njengesithuba sethu, esinokunikezelwa kwilog yokungena kwiwebhusayithi. Kwixa elizayo, ngaphambi kokuba sihlule isiza kwi-Intanethi, siya kwandisa le modeli kunye nezinye iimodeli ezichazwe kuyo, kwaye sakhe amanyathelo ongezelelweyo okhuseleko ku-Loging ochasene nobuqhetseba. Siza kuqala ngokusebenzisa ezinye iifom zokungena ezibonelelwa nguDjongo. Okokuqala, masidala usetyenziso olutsha esiya kulisebenzisa ukubonelela ngeetemplate kunye neembono zephepha lokungena elisisiseko. Siza kudala ezinye iinkqubo zokubonisa imiceli mngeni yokungena ngemvume ukwenzela ukuba ikhusele i-APP, kubandakanya iPinecode, inkcazo yobuso, izixhobo zangaphandle, uqinisekiso lwezinto ezininzi.

Sele sithethile ngokuqala iapp. Kulawulo lwethu, ngaphakathi kwendawo ebonakalayo, ukulawula.py kwezi ngxoxo

python manage.py startapp users

Ngoku, kufanele ukuba sibe nolawulo lwe-app entsha. Masiqale ngokudala umbono kuloo ndlela ihambelana nomsebenzisi wokungena. U-Djengo uye wakha kwimbono yelogo yomsebenzisi, kodwa ezi aziyi kulungela thina kuba sifuna umbono wesiko, okhethwayo okwenziwa yinkcazo.

Kule mbono, siza kuqala ngokukhangela isicelo seposi, sokudlulisa isicelo sokungena ngaphakathi kwi-DJANGO, siqinisekisa i-akhawunti yomsebenzisi, kwaye ungene kumsebenzisi ngaphambi kokuba usebenze kwakhona kwi-APP yethu yokondla.

Kubasebenzisi / izimvo.py, yongeza le khowudi ilandelayo

        username = request.POST['username'] # Fumana igama lomsebenzisi kunye negama lokugqitha kwisicelo seposi
        password = request.POST['password'] # Qinisekisa umsebenzisi

Yiyo yonke le nto uyifunayo ukuze ufumane umbono wokungena. Ngoku, masizenzele ifom yokujonga itemplate yesiseko. Siza kuqala ngokudala isikhombisi esitsha seetemplate kwifolda yabasebenzisi.

mkdir users/templates
mkdir users/templates/users

Ngoku, kufuneka sikwazi ukuhlela abasebenzisi / iitemplate / abasebenzisi / ungene.html. Ngelixa sikulo, siza kudala itemplate yokuvumela umsebenzisi ukuba abhalise.

nano users/templates/users/login.html

Ngoku, kwitemplate,

Ezi zisisiseko zetemplate yokungena. Ifana nenyani enye itemplate kwisakhiwo, kodwa ijongeka kancinane xa inikezelwa. Singakopa le khowudi ukwakha enye itemplate efanayo ebizwa ngokuba yirejista.html, apho siza kutshintsha khona igama kwaye sisebenzise ifomu entsha esiyakhayo. Masenze kuqala itemplate kuqala. Hlela abasebenzisi / iitemplate / abasebenzisi / irejista.html kwaye wongeze le khowudi ilandelayo:

Ngoku, masakhe ifom yobhaliso lomsebenzisi kunye nesangqa ngasemva kwiimbono ngaphambi kokuba siphucule iilogi zethu zomsebenzisi ngemodeli. Siza kwenza le fomu sisisiseko sokuqalisa, kodwa sibandakanya iinkcukacha ezingakumbi kunye nezinto zokhuseleko ezinje ngezivumelwano kunye neCAPTCHA kwixa elizayo. Hlela iifom kunye nabasebenzisi be-NAAO.PY, kwaye wongeze le khowudi ilandelayo.

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email', 'password1', 'password2']

Ke sinenye indlela apha, esebenza kakuhle. Ifom yobhaliso yomsebenzisi ngegama lomsebenzisi, i-imeyile kunye negama lokugqitha, kunye nomgaqo-siseko wegama eligqithisiweyo. Qaphela ukuba le fomu ayindindisi iifom eziqhelekileyo.Ukulalela, yimodeli ethetha ukuba inemeta. Intsimi enye ichazwa nje, kwaye i-meta yeklasi ichaza imodeli yefom ihambelana nolwazi olulandelayo oluya kubhalelwa kwifom. Uninzi lwezi zinto sele lukhona eDjango zakhiwe ngoShishino, ngoko ke siya kusebenzisa oko njengesiseko seklasi (idluliselwe kwi-Gedhesis).

Okulandelayo, siza kuhlolisisa imbono yokubhalisa umsebenzisi, ngoku ekubeni sinefomu kunye netemplate. Le yimodeli, njengaleyo kwimbono yeposi entsha. Hlela abasebenzisi / izimvo.py kwaye wongeze le khowudi ilandelayo:

# ... Ngenisa

Yiyo yonke le nto kufuneka sifumane umsebenzisi, kodwa kufuneka sibe nolwazi olungakumbi. Sifuna ukwazi ukuba umsebenzisi ubhaliswe, liliphi ixesha abahlala ngayo, njengeencwadi zebhayiloji, i-ITZZ, siya kudinga ukuhlaziya imodeli yethu yokutya, i-TOPRECK. Ukuze senze loo nto, siya kuhlaziya iimodeli.py kuzo zombini ii-apps. Masiqale ngokuhlela imodeli yokutya. Imele ibonakale ngolu hlobo ngoku:

from django.db import models # ... Ngenisa
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # Yongeza kulo mgca

Nika ingqalelo kumgca wesibini ongezelelweyo kwifayile. Esi sisitshixo selinye ilizwe, esiya kuthi sithi iposti nganye kumsebenzisi omnye ngeposi, ukuze siqiniseke ukuba sigcina izithuba zomsebenzi-ngamnye kwaye akukho thuba inokwenziwa ngaphandle kokuchasana nomsebenzisi. Sichaza le iqhosha langaphandle ngeklasi imele, impikiswano ecinyiweyo yokuqinisekisa ukuba izithuba zifunyanwe, kwaye zinokuyisebenzisa ukujongana nezinto ezenziwa ngumsebenzisi. Eli gama lihambelana neposi.autrur, umbhali wesikhundla, esinika umsebenzisi othumele iposti ngokwayo. Ngoku singafumana izithuba zomsebenzi ezenziwe ngumsebenzisi osebenzayo

Ngoku, masenze iilog zethu zihlale zininzi. Sele senze indawo yethu encinci esengozini yokufanekiswa ngamanqanaba nje anciphisa inani lamaxesha esiya kuvumela ukungena kwi-SEATE kwisiza, oku kulula kakhulu. Makhe siqale ukugcina ulwazi malunga nomsebenzisi ngamnye ngaphambi kokuba siqhubeke nokukhulisa i-app yethu. Abasebenzisi bokuhlela / iimodeli.py, bongeza le khowudi ilandelayo.

from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True, related_name='profile')
    account_created = models.DateTimeField(default=timezone.now)
    last_seen = models.DateTimeField(default=timezone.now)
    can_login = models.DateTimeField(default=timezone.now)
    preferred_name = models.CharField(max_length=20,default='', null=True, blank=True)
    bio = models.TextField(blank=True, default='')

Qaphela ukuba le modeli ifana nemodeli yeposi. Sinendawo eyongezelelweyo yengeniso, yexesha, eliya kusivumela ukuba sibeke izinto ezingafezekisi ngamasimi, kwaye sinomlinganiso kunye nendawo yokubhaliweyo njengesithuba. Sebenzisa onke la maxesha amaxesha asinceda ukuba sikhuseleke indawo kwaye siqonde ukusetyenziswa kwayo, kunye nemimandla yokubhaliweyo masinike ulwazi malunga nomsebenzisi ngamnye, okanye umbhali, kwiwebhusayithi. I-Onetoofield ifanele ibe kukuphela kokuqwalaselwa okuncinci, iziphatha ngokuchanekileyo kanye njengeyona Presigby kodwa inye kuphela ngemodeli nganye. Ngale ndlela, umsebenzisi uneprofayile enye, ngelixa enokuba nezithuba ezininzi.

Ngoku, masiphucule ukungena kwethu kwaye sibhalise Jonga kwi-akhawunti yeprofayile. Okokuqala, hlela abasebenzisi / izimvo.py kwaye ugxile kwimbono yorejista:

# ... Ngenisa
            Profile.objects.create(user=user) # Qiniseka ukongeza lo mgca, ukwenza iprofayili yomsebenzisi

Oku kudala iprofayili yomsebenzisi, ngaphandle kokugcwalisa naluphi na ulwazi. Ngoku, sifuna ukuqinisekisa ukuba i-akhawunti yomsebenzisi ayinakungena rhoqo, okanye ubuncinci iiphasiwedi azinakuzinywa rhoqo, ke masihlaziye iMbali yokungena.

# ... Ngenisa
        if user and user.profile.can_login < timezone.now(): # Qaphela ukuba ngoku jonga ukuba umsebenzisi angangena
        else: # Ukuba ungene ngemvume ayiphumelelanga,
            user = User.objects.filter(username=username).first() # Le yinxalenye apho sihlaziya khona iprofayili yabasebenzisi
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Ke azikwazi ukungena kwakhona kwimizuzwana embalwa

Esi sisiseko esisisiseko sokhuseleko. Qiniseka ukuba indawo ayikho ingozi kumntu ozama nje ukudityaniswa kwephasiwedi, okanye nakwexesha elinye ngaxeshanye. Oku akuyi kukhathaza ukuba ngumsebenzisi oqhelekileyo owazi idyasi yabo kunye nokungena nje kwizixhobo ezimbalwa, kodwa kuya kugcina iirobhothi ezahlukeneyo ze-app kwi-app. Qaphela ukuba senze inkcazo yengxelo eguquguqukayo, inga_Login, oko kufanele ukuba ibe lixesha elidlulileyo, kwaye liyihlaziye ngemvume nganye engaphumelelanga kusetyenziswa igama lomsebenzisi. Ngale ndlela, umsebenzisi onobubi ngekhe akwazi ukuqikelela ipaswedi naphi na apho kufutshane ngokukhawuleza. Inani lemizuzwana ekwi-Landi. Ndicebisa ukuba ndiqale nge.

Khumbula, sakha isikripthi esigciniweyo ukuze sisindise umsebenzi wethu, ngoko masiqhubeke kwaye sibuyele kweyona nto sinayo ukuza kuthi ga ngoku ukuba yonke into igcinile. Gijimani:

sudo backup

Kwakhona, oku kuya kuwusindisa umsebenzi wakho ukuza kuthi ga ngoku. Ndicebisa ukubaleka rhoqo ukugcinwa rhoqo ukuze ndigcine umsebenzi wakho, kwaye unokufuna ukuqhuba umsebenzi obanzi ngokuzenzekelayo. Ungayenza le nto usebenzisa i-UNIX into ebizwa ngokuba yi-cron. Ukuvula le nto, uqhuba lo myalelo ulandelayo kwaye ufake iphasiwedi yakho:

sudo crontab -e

Ukuba awukakhe ukhethe ukhetho 1 kwi-nano, umbhalo wombhalo kufuneka ube uqhelene, kwaye uskrolele ezantsi kwifayile usebenzisa amaqhosha atolo. Yongeza le mgca ilandelayo:

0 * * * * sudo backup

UCron usebenzisa umzuzu wefomathi, iyure, usuku lwenyanga, inyanga, usuku lweveki, apho i-A * okanye inombolo imele khona xa iqhuba umyalelo. Sebenzisa i-0 kumzuzu kunye nezinye izinto ezikhethiweyo, sinokuqhuba umyalelo kumzuzu wokuqala weyure nganye ekuqaleni komzuzu. Oku kusivumela ukuba siyibambe ikhowudi ngokuzenzekelayo. Yonke imisebenzi kaCron xa iphunyezwa nge-sudo ukuba injengengcambu, ngenxa yoko asiyi kudinga ukuchwetheza kwi-password rhoqo iyure.

Ukwenza kube lula ukubuyisela ikhowudi yethu ngaphandle kokusebenzisa ipaswedi, masikhuphe igama eligqithisiweyo lomyalelo wethu wokugcina. Siza kuyenza le nto ngokwenza lo myalelo ulandelayo kwaye ungene kwi-password:

sudo visudo

Ngoku, masisukele ezantsi kwifayile kwaye songeze enye umgca:

ALL ALL=NOPASSWD: /bin/backup

Oku kusivumela ukuba sibaleke "i-backup" njengaye nawuphi na umsebenzisi, ngaphandle kwephasiwedi. Ifomathi yoku kulula, i-prefix nje ilayini "

Ngoku, masiqale ukusebenza nge-imeyile. I-imeyile ibaluleke kakhulu kwiiwebhusayithi, kuba yindlela yokugcina iwebhusayithi ikhuselekile ngakumbi, qinisekisa abasebenzisi ngabantu bokwenyani, kunye neemveliso zentengiso okanye iinkonzo kubathengi. Abantu abaninzi abasebenza kwi-Intanethi bajonga i-imeyile yabo yonke imihla, kwaye bafumana zonke iintlobo ze-imeyile yentengiso malunga neemveliso kunye neenkonzo abanomdla kuzo.

Okokuqala, unokuhlawula inkonzo ye-imeyile eya kukuvumela ukuba uthumele i-imeyile kwidomeyini yakho kwaye ufuna ikhowudi encinci. Zininzi iinkonzo ezibonelela oku, njengendawo yokusebenzela yeGoogle, i-SITINBINE, i-imeyile, nangaphezulu.

Ngaphandle koko, ukhule kakuhle kwinkonzo yakho ye-imeyile kwiserver yakho ukusuka ekuqaleni. Ndincoma olu khetho, nangona kunekhowudi ngakumbi kwaye inokufuna ukubamba okhethekileyo. Awuyi kuba nakho ukuqalisa iseva yeposi kwikhompyuter yakho inokwenzeka, ke masiqhubeke kwaye sivavanye ubumbeko kunye nekhowudi ukuthumela i-imeyile ngaphambi kokuba siqale iseva ye-imeyile kwaye sizenzele i-imeyile yethu yeposi ngaphakathi.

Okokuqala, hlela useto.py kunye nale mthetho ulandelayo:

nano app/settings.py

Apho i-app igama le-app olwenzileyo nge-StartApp.

Yongeza le migca ilandelayo:

SITE_NAME = 'Django App'

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_ADDRESS = username@server.com'
EMAIL_HOST_USER = 'username'
EMAIL_HOST_PASSWORD = config['EMAIL_HOST_PASSWORD']
DEFAULT_FROM_EMAIL = '{} <{}>'.format(SITE_NAME, EMAIL_HOST_USER)

Qiniseka ukuba ukutshintsha ezi xa sele ukulungele ukuhambisa i-App yakho, siya kundibuyisela kamva. I-imeyile_address iseti kufuneka i-imeyile ungathanda ukuyithumela, kwaye iphasiwedi (i-imeyile_host_Password) kufuneka isethwe kwiPassword owenzele iseva. Ndiyifaka iphasiwedi kwifayile yoqwalaselo ukuyigcina iphuma kwikhowudi esebenzisa le nto ilandelayo, ngaphezulu kwale migca kwisetingi.py:

import os
import json
with open('/etc/config.json') as config_file:
    config = json.load(config_file)

Emva koko, ndimisele ifayile ye-JSON nge-fayile kwi /etc/config.jsson esebenzisa i-nano ngolu hlobo lulandelayo.

Ukuhlela ifayile:

sudo nano /etc/config.json

Yongeza le migca ilandelayo:

{
	"EMAIL_HOST_PASSWORD": "<some password here>"
}

Siza kuqhubeka nokuhlela ifayile yoqwalaselo kwaye songeze onke amaphasiwedi kunye nezitshixo esiya kuzisebenzisa kwi-APP. Okwangoku, masikhawuleze siyithumele indlela yokuthumela i-imeyile usebenzisa iPython. Okokuqala, masize senze itemplate ye-imeyile yokuqinisekisa sinokuthumela kubasebenzisi bethu, kwaye siyibeke kwi-Complates yomsebenzisi. Le template iya kubhalwa kwi-HTML.

nano users/templates/users/verification_email.html

Le imeyile ilula. Kuthatha umxholo womsebenzisi, i-URL yesiseko yendawo, kunye ne-ID yomsebenzisi kunye nethokheni esetyenziselwa ukuqinisekisa i-imeyile yomsebenzisi. Qiniseka ukuba ukuchaza i-URL yesiseko kwisetingi.py ngaphambi kokuba sibhale ikhowudi yePython ukuba inike itemplate. Qhubeka kwaye wongeze le migca ilandelayo kwi-app / useto.py, kufutshane nasekuqalekeni.

SITE_NAME = 'Django App'
PROTOCOL = 'https'
DOMAIN = 'example.com'

BASE_URL = PROTOCOL + '://' + DOMAIN

Ekugqibeleni, xa indawo yakho ilungele i-Intanethi kwaye uyayibeka, uya kufuna ukuchaza isizinda sakho njengegama le-domain oyithengayo ukumela indawo. Eli ligama oza kuchwetheza kwi-Navbar ukuze ufikelele kwindawo yakho. Okwangoku, ungashiya i-domain engenanto okanye usebenzise indawo. Uya kufuna ukutshintsha indawo_gama kwigama ofuna ukulinika indawo yakho, lokukhetha kwakho.

Ngaphambi kokuba sithumele i-imeyile, masizenze umthengisi wethokheni ukuze sikwazi ukuba ne-akhawunti ye-akhawunti isebenze engapheliyo. Singenza oku ngokwakha kunye nokungenisa ithokheni yeakhawunti ejongeka ngathi ilandelayo. Hlela ifayile:

nano users/tokens.py

Yongeza le khowudi ilandelayo:

from django.contrib.auth.tokens import PasswordResetTokenGenerator
import six
class TokenGenerator(PasswordResetTokenGenerator):
    def _make_hash_value(self, user, timestamp):
        return (
            six.text_type(user.pk) + six.text_type(timestamp)
        )
account_activation_token = TokenGenerator()
unsubscribe_token = TokenGenerator()

Lo mveliso wesiseko esisiseko uvelisa uphawu esinokuthumela umsebenzisi kwi-URL kwaye umsebenzisi unokusebenzisa ukuqinisekisa i-imeyile kunye nokuvula iakhawunti yabo.

Okulandelayo, makhe sibone ukuba ungayithumela njani i-imeyile. Sebenzisa i-nano, hlela abasebenzisi / i-imeyile.Up.

nano users/email.py

Ukuthumela i-imeyile ye-HTML ye-HTML iya kujongeka ngolu hlobo:

from django.contrib.auth import get_user_model
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.contrib.sites.shortcuts import get_current_site
from django.core.mail import send_mail
from django.template.loader import render_to_string
from django.utils.encoding import force_bytes
from django.core.mail import EmailMultiAlternatives
from django.shortcuts import render
from .tokens import account_activation_token
from django.template.loader import render_to_string
from django.utils.html import strip_tags
from django.template import Template, Context
from django.conf import settings
import traceback

def send_verification_email(user):
    User = get_user_model()
    mail_subject = '[{}] Activate your account.'.format(settings.SITE_NAME)
    html_message = render_to_string('users/verification_email.html', {
        'user': user,
        'domain': settings.DOMAIN,
        'protocol': 'https',
        'uid': urlsafe_base64_encode(force_bytes(user.pk)),
        'token': account_activation_token.make_token(user),
    })
    send_html_email(user, mail_subject, html_message)

Oku kulula. Singenisa imisebenzi esifuna ukuthumela i-imeyile, ukunikezela nge-imeyile ngeetemplate, kunye noseto lwethu, emva koko sichaza i-imeyile ngegama letemplate kwaye siyithumele kumsebenzisi usebenzisa umsebenzi. Uya kuqaphela ukuba asikachazanga umsebenzi wokuthumela i-imeyile, thumela_html_eitali, okwangoku, masibhale le khowudi esele yongeze kubasebenzisi / i-imeyile.Upy

def send_html_email(user, mail_subject, html_message):
    to_email = user.email
    username = user.username
    if to_email == '':
        return None
    unsub_link = settings.BASE_URL + user.profile.create_unsubscribe_link()
    html_message = html_message + "<p><a href=\"" + unsub_link +  "\" + title=\"Unsubscribe from " + settings.SITE_NAME + " emails\">Unsubscribe</a></p></body></html>"
    msg = EmailMultiAlternatives(mail_subject, strip_tags(html_message), settings.DEFAULT_FROM_EMAIL, [to_email], headers={'List-Unsubscribe' : '<' + unsub_link + '>'},)
    msg.attach_alternative(html_message, "text/html")
    profile = user.profile
    try:
        msg.send(fail_silently=False)
        if not profile.email_valid:
            profile.email_valid=True
            profile.save()
    except:
        profile.email_valid=False
        profile.save()

Oku kunzima kakhulu, kwaye asikulungelanga ukuqhuba yonke le khowudi okwangoku. Qaphela ukuba sichaza i-UNICK_Link, ikhonkco lomsebenzisi elinokulisebenzisa ukubhala kwii-imeyile zethu. Oku kubalulekile, kuba abasebenzisi kuya kufuneka bakwazi ukuphuma kwii-imeyile zethu ngaphandle kokuba bafuna ukuzibona, nangaliphi na ixesha. Sikwangenela indlela yokubhaliweyo kwisigidimi sethu, esingumyalezo we-HTML sahluthwa iithegi ze-HTML. Okokugqibela, sijonga ukuba i-imeyile ithunyelwe, kwaye ukuba ayizange, siphawula kwiprofayili yomsebenzisi ukuba i-imeyile yayo ayisebenzi.

Masibuyise umva kwiimodeli zomsebenzisi ukuze sikwazi ukwenza lo msebenzi wonke. Kufuneka sichaze umsebenzi wokuvelisa ikhonkco ukuze sikwazise, ​​kwaye sichaze intsimi ye-boolean ukuze iphawule ukuba i-imeyile yomsebenzisi ayisebenzi.

Okokuqala, yongeza olu mpahla ilandelayo ilandelayo kwi-top / modlels.py

nano users/models.py
# ...

Okulandelayo, masidibanise imisebenzi kwimodeli yomsebenzisi ukwenza ithokheni kwaye ihlole ithokheni esetyenziselwa ukwenza i-imeyile, kunye nentsimi esetyenziselwa ukuba umsebenzisi afumane i-imeyile ngempumelelo. KuBasebenzisi / kwiimodeli.py kwakhona, yongeza le khowudi elandelayo ekupheleni kwemodeli (ikhowudi ye-Inden)

# ...
            TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # Isebenzayo kwiintsuku ezingama-30

Oku kulula, sisebenzisa umthi wexesha, esi sisixhobo esisiseko se-cryptography, ukwenza ithokheni esiya kuphelelwa emva kwexesha elithile, kwaye sisebenzisa omnye umsebenzi ukujonga ukuba iyasebenza. Sisebenzisa ezi thokhensi kabini, kwakanye ukuqinisekisa i-imeyile, kwaye kube kanye kwikhonkco lokungabhalisi.

Ngoku sinabo, okokugqibela komsebenzi esiya kufuneka siwenze sikwizimvo. Kungaphakathi kwabasebenzisi / iimbono.py, masidibanise izimvo zokuqinisekisa idilesi ye-imeyile, kunye nokubhalisa.

nano users/views.py

Okokuqala, yongeza le mpahla ilandelayo ilandelayo. Ndiphose ngaphezulu kokongezelelekileyo ngenxa yoko akufuneki singenise izinto ezininzi kwakhona kamva.

from .email import send_verification_email # Qiniseka ukuba ungenisa umsebenzi wokuthumela i-imeyile

Usenokuba unazo ezinye zezi zinto zingeniswayo, kodwa ayonzakalisi ukuba ziphinde. Uya kufuneka ungenise umsebenzi wokuthumela nge-imeyile yokuqinisekisa, kunye neakhawunti

Ngoku, ezantsi kwifayile, yongeza le khowudi ilandelayo:

        # Ayibhalisi
    # Ngenye indlela iphinde isebenze kwiphepha lokungena
# I-thumelfiemetiemetiemeti

Le yikhowudi eninzi. Masiyiphule phantsi. Umsebenzi wokuqala, ucocekile kwaye ulula, awuchazwanga umsebenzisi kuluhlu lokuposa. Umsebenzi wesibini wenza i-imeyile, kwaye uyakuqaphela umsebenzi oqaqambileyo, thumela ialmpameli. Wamkelekile ukuba usebenzise itemplate ye-imeyile kunye nomsebenzi wokuthetha ukuthumela i-imeyile yokwamkelwa, andikabikho. Umsebenzi wokugqibela endiyiphosileyo ubalulekile, kuba ii-imeyile zokuvula ziphelelwe lixesha. Ke ngoko, kuya kufuneka sithumele i-imeyile yokuvula ixesha elithile. Singasebenzisa ifom esisiseko yoku, kwaye sibize umsebenzi ukuba uthumele i-imeyile yokuqinisekisa. Phambi kokuba senze oku, masiqinisekise ukuba sithunyelwe kwindawo yokuqala, ngokongeza umnxeba kwimbono yorejista. Yongeza lo mgca ngaphambi nje kokuba ubhenele kwi-redreviere jonga, irejista, kubasebenzisi / izimvo.

nano users/views.py
# ... (emva) irejista (isicelo):
# ... (ngaphambili) iphinda iphinde isebenze (

Awudingi ukongeza imigca yokuqala neyokugqibela kuloo khowudi ye-Snippet, qinisekisa ukuba irejista ithumela i-imeyile yokuqinisekisa kumsebenzisi. Imele ibonakale ngoluhlobo:

# ... Ngenisa
            send_verification_email(user) # Qinisekisa ukongeza lo mgca!

Ngoku, kuya kufuneka songeze ifom yokuthumela i-imeyile yokuvula. KuBasebenzisi / iifom.py, yongeza le fomu ilandelayo:

# ... (ingenisa)

Siza kufuna itemplate ehambelana nale fomu iphinda isebenze nge-imeyile. Masingeze le template kwi. Hlela ifayile:

nano users/templates/users/resend_activation.html

Okulandelayo, Yongeza le khowudi ilandelayo kwifayile.

I-Whow, ininzi kakhulu! Ngoku, xa sibeka ikhowudi kwiseva yethu, siya kuba nakho ukuthumela i-imeyile ye-HTML kwaye isebenze iiakhawunti zabasebenzisi ngokucofa kwi-imeyile. Sinokufuna ukuthumela i-imeyile yokwamkela ngokulula, ke masibone ukuba ungayenza njani loo nto. Buyela kubasebenzisi / i-imeyile.Up, yongeza le khowudi ilandelayo:

def sendwelcomeemail(user):
    User = get_user_model()
    html = open('{}/users/welcome_email.html'.format(settings.BASE_DIR)).read()
    subject = 'Welcome to ' + settings.SITE_NAME + ', {{ username }}!'
    template = Template(html)
    subjtemplate = Template(subject)
    context = Context({'username': user.username, 'base_url': settings.BASE_URL, 'model_name': 'Daisy Holton, 'site_name': settings.SITE_NAME})
    renderedtemplate = template.render(context)
    subjcontext = Context({'username': user.username})
    subjrenderedtemplate = subjtemplate.render(subjcontext)
    send_html_email(user, subjrenderedtemplate, renderedtemplate)

Kwakhona, siya kufuna itemplate ukuba inike lonke ulwazi. Kwiwebhusayithi yam, itemplate ijongeka ngathi ingezantsi, kodwa wamkelekile ukuba uyayithanda na.

Qaphela ukuba asinayo i-thegi yokuvala okanye iithegi ze-HTML, kuba sidibanisa apha xa sidibanisa ikhonkco le-HTML lingafundisiswanga. Oku kubalulekile, kodwa asifuni ukuzichaza kabini.

Yintoni elandelayo? Siphume ixesha elide. Ngokwenene, kufuneka sikulungele ukuhambisa indawo kwiseva. Sinokongeza umbekisi we-@LoLogin_ingcikise kwaye senze izimvo zethu zikhuselekile, thatha i-imeyile yomsebenzisi, thumela i-imeyile yomsebenzisi, thumela i-imeyile ehambelana ne-COCH, kunye nolwazi lwe-COCH, olusisiseko sewebhu, esifuna ukuba yeyiphi iwebhusayithi ukuze ihlale ifanelekile. Siya kongeza iimpawu ezimbalwa eziluncedo ngakumbi, kwaye emva koko sakhe isiseko sokukhupha ikhowudi yethu kwiseva ekude, useto lweseva yeposi, ubume be-imeyile, kunye neefiltha ukwenza indawo yethu ikhuselekile kwaye ifanelekile indawo yethu.

Siza kufuna kwakhona ukujonga kwakhona iphasiwedi kwakhona, ke masikongeze ngokukhawuleza. I-Djengo yakhiwe ngokujonga kwakhona iphasiwedi yaphukile kwemisebenzi ethile, kodwa siza kujonga ngendlela yokubhala umbono wethu, itemplate ye-imeyile, iifom, kunye neepateni ze-URL. Nantsi into ebukeka ngayo umbono, kubasebenzisi / izimvo.py

# ... Ngenisa

Le fomu yakhiwe kwi-Djengo, kodwa siyakufuna itemplate yokuqinisekisa ukuseta kwakhona iphasiwedi, abasebenzisi / iitemplate / abasebenzisi / iphasiwedi / iphasiwedi

Sikwanayo nethemplethi yokuthumela i-imeyile ye-password, eneefom ezilula, kubasebenzisi / iitemplate / abasebenzisi / iphasiwedi / iphasiwedi / iphasiwedi

Itemplate ye-imeyile ngokwayo ilula, yifayile ye-HTML esisiseko yokunikezela ikhonkco lokudibanisa kwakhona i-password, kubasebenzisi / abasebenzisi / abasebenzisi / i-password_html. I-DJONO iza kuyitolika le fayile.

Kuya kufuneka kufuna ezinye iitemplate ezimbini. Eyokuqala kukuqinisekisa ukuba i-imeyile ithunyelwe. Iimbono zezi sele zikwiDjango, ngoko kufuneka nje siziphendule kwi-URLS.UP. Le template ifumaneka kubasebenzisi / itemplate / abasebenzisi / iphasiwedi_reset_dene.html

Kwaye okokugqibela, ukuqinisekisa ukuba i-password ye-password igqityiwe, abasebenzisi / iitemplate / abasebenzisi / iphasiwedi_reset_yetml

Ngoku, sifuna iipateni ze-iRL kwezi mbono. KuBasebenzisi / ii-URLs.py, zongeza ezi patheni zilandelayo:

    # ... Ii-URL zangaphambili apha

Iitemplate ezine, zininzi kakhulu! Kodwa ngoku sinokuqiniseka ukuba sikwazi ukuseta kwakhona iphasiwedi yomsebenzisi nangaliphi na ixesha kufuneka, sonke kwisikhangeli sewebhu.

Ndiyayiqonda le khowudi ininzi. Ukuba ibonakala incinci ngaphezulu kwentloko yakho, kulungile. Uya kuphucula, ukuqonda kwakho kuya kuphucuka, kwaye uya kuba nobuchule ngakumbi kwikhowudi kungekudala. Ukuba ulahlekile ngokupheleleyo, ndincoma ukuba ndibuyele kule software kamva emva kokusebenza kwi-Con-pact Ezi zihlala zikhululekile ukuba ziqalise, kwaye ziya kukukhokela kuyo yonke into oyifunayo xa ubuyela kule projekthi. Ukuba uziva ngathi ulungele ukuqhubeka, funda, ngokulandelayo, siya kuhlawula ikhowudi yakho kwiseva ekwanti kwaye siseke i-imeyile ye-imeyile isebenzisa iprojekthi entsha kwimiyalelo embalwa.

Into yokugqibela ekufuneka siyenzile ngaphambi kokuba sikhuphe kwiseva ekude senze indawo yethu ikhuseleke ngakumbi. Uya kuqaphela ukuba umbono wokungena kuphela uthatha igama lomsebenzisi kunye negama lokugqitha, kwaye akukho uqinisekiso lwezinto ezininzi okanye ikhowudi enye. Olu lulungiso olulula, kwaye ngekhowudi efanayo, sinokwenza indawo yethu ithumele imiyalezo ebhaliweyo kwaye iqhubeke nempendulo kwimiyalezo ebhaliweyo ethunyelwe kwiseva. Ukuqala, siya kubuyela kwiimodeli zomsebenzisi kwaye songeze i-Signer yexesha eliza kubonisa ukungena nganye. Siya kongeza i-como eyodwa, ejikelezayo kwimodeli yomsebenzisi eya kusetyenziselwa ukongeza ukhuseleko olongezelelekileyo kwi-lokuvenki yethu. Ukuhlela iimodeli zomsebenzisi, abasebenzisi / iimodeli.py, yongeza le khowudi ilandelayo:

# Qiniseka ukuba ungenisa i-UUID, i-Timestamp Signer kunye ne-URL Generator (Preser)
    # Yongeza le khowudi apha
    # Kwaye wongeze lo msebenzi
            TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Isebenza i-3 yemizuzu

Qiniseka ukuba abasebenzisi bakho / iimodeli.py zijongeka ngolu hlobo, ngaphandle kwezimvo (ikhowudi kwimigca nge #). Ukuphulukana noku, ilula. Sinempahla embalwa, umzingeli wexesha engumbambano olunokuvelisa ikhowudi ekhuselekileyo kwaye iqinisekise ukuze iqiniseke, isetyenziswe kuphela, kwaye ayikho ngaphezulu kunenani elithile lemizuzwana. Sikwasebenzisa i-UUID, eyisazisi esahlukileyo echaza umsebenzisi wethu ekutyikisweni kwethokheni, nakwi-URL apho iphawuli lithunyelwe khona kumsebenzisi. Siza kusebenzisa le ryptography esisiseko yokwakha umbono owenziwa wezinto ezimbini. Ngaphambi kokuba senze enye into, masiqhube ukufuduka ukuze iimodeli zethu zomsebenzisi zihlaziywa. Kwisikhombisi enolawulo.Upy, qhuba le miyalelo ilandelayo ukwenza nokugqibezela ukufuduka.

source venv/bin/activate
python manage.py makemigrations && python manage.py migrate

Oku kubalulekile kuba ngalo lonke ixesha senza utshintsho kwiimodeli, kuya kufuneka sizenze iitafile kwaye sihlaziye i-database kunye nokungasebenzi kakuhle ngaphambi kokuba sisebenzise iimodeli.

Okulandelayo, masiphucule iMbonakalo yethu yokungena ukuze siphinde sibe kwimbono yesibini. KuBasebenzisi / Iimbono.py, susa umsebenzi wokungena kwaye ubhekise kwi-URL sivele kwiimodeli zomsebenzisi.

# ... Ngenisa
        if user and user.profile.can_login < timezone.now(): # Qaphela ukuba ngoku jonga ukuba umsebenzisi angangena
            # Susa umsebenzi we-Aute_Login olapha
                return redirect(user.profile.create_auth_url()) # Qaphela ukuba sibuyisele kwi-URL entsha apha
            else: # Ukuba umsebenzisi akasebenzisi uqinisekiso oluninzi, ukubamba nje.
        else: # Ukuba ungene ngemvume ayiphumelelanga,
            user = User.objects.filter(username=username).first() # Le yinxalenye apho sihlaziya khona iprofayili yabasebenzisi
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Ke azikwazi ukungena kwakhona kwimizuzwana embalwa

Ke le nto ilula, ngoku sinendlela yokuhambisa impendulo kwimbonakalo emibini yokuqinisekisa. Sikwanokubuyela kwimeko yokuba umsebenzisi akakongezanga inombolo yefowuni. Siya kongeza umbono osisiseko ukongeza inombolo yefowuni kungekudala kwaye ungene ngemvume ngomyalezo obhaliweyo kungekudala.

Okokuqala, sifuna indlela elula yokuthumela umyalezo obhaliweyo kwikhowudi yethu. Ukwenza oku, sinokukhetha kwinani le-APIs, kodwa eyona ilula ngendlela yam ngumbono wamawele. Banikezela nexabiso elihle leeprojekthi ezincinci, kunye nezaphulelo ezininzi. Yenza i-akhawunti kwi-Twilio.com, bhala iinkcukacha malunga neprojekthi yakho, thenga inombolo yefowuni, kwaye ukhuphele izitshixo zakho ze-API kwi-API yakho. Emva koko, yongeza le khowudi phantsi kwefayile entsha, abasebenzisi / i-sms.py.

nano users/sms.py
# Ngenisa zonke iiphakheji ezifanelekileyo
# Le khowudi ithumela isicatshulwa nge-wilio
# Umsebenzi ongumncedisi ukufumana inombolo kunye neenombolo ezininzi
# Thumela isicatshulwa ukuqinisekisa umsebenzisi
# Thumela umsebenzisi nawuphi na umbhalo ngalo msebenzi
# Qinisekisa ikhowudi ngalo msebenzi
# Qinisekisa ixesha

Qiniseka ukuba ukutshintsha useto lwakho ngokufanelekileyo, ukongeza le migca ngezitshixo zakho:

# Qiniseka ukuba ukukopa ezi kwi-Twilio Dashboard yakho
AUTH_VALID_MINUTES = 3 # Inani lemizuzu iphepha le-tfa lisebenze nje

Okokuqala, siya kufuna iindlela zoqinisekiso lwethu ezimbini zokuqinisekisa. Abasebenzisi bokuhlela / iifom.py, bongeza le khowudi ilandelayo.

# ... Ngenisa
# Ifomu yokungenisa inombolo yethu yefowuni
# Ifomu yokuqinisekisa

Okulandelayo, masizenze izimvo kubasebenzisi / izimvo.py

# ... Ngenisa

Siza kufuna iitemplate zazo zombini ezi mbono. Masingeze itemplate ye-MFA kuqala.

nano users/templates/users/mfa.html

Yongeza le khowudi ye-HTML kwi template

Esi sizichazayo. Ifomu ithumela ikhowudi okanye ikhowudi engenanto, kwaye uyakuqaphela kwimbonakalo esiyithumela ikhowudi ukuba sifumana ikhowudi engenanto. Emva koko singenise amaqhosha amabini, kwaye ngale ndlela sinokuthumela ikhowudi ngeqhosha. Okulandelayo, siya kongeza ifomu elula yokongeza inombolo yefowuni.

nano users/templates/users/mfa_onboarding.html

Yongeza le html elandelayo:

Le fomu ilula kakhulu, inikezela nje ifomu yefowuni esidale kwaye ivumela umsebenzisi ukongeza inombolo yefowuni.

Oku kubonakala kulungile! Ngalo lonke ixesha yonke into icwangcisiwe ngokufanelekileyo, kufuneka sikwazi ukuthumela imiyalezo, kwaye ungene ngomsebenzisi kwinombolo yabo yefowuni ngokukhawuleza njengoko sisongeza iipateni ze-URL. Into yokugqibela ekufuneka sizimisele iprofayile yeprofayile ukuze siqiniseke ukuba umsebenzisi unokutshintsha inombolo yabo yefowuni ngaphandle kokuyeka "inketho yokuyeka" inketho "yokufaka umyalezo" wokuphuma kwimiyalezo ebhaliweyo yexesha elizayo.

Masidibanise imbonakalo yeprofayile kubasebenzisi / izimvo.py. Olu luvo luza kuhlaziya i-bio yomsebenzisi, i-imeyile, igama lomsebenzisi, kunye nenombolo yefowuni, kunye nokusivumela ukuba senze ukuba senze amandla ombane omninzi. Okokuqala, siya kufuna ezinye iindlela ezimbini kubasebenzisi / kwiifom.py

# ... Ngenisa

Emva koko, sinokwenza umbono wokusebenzisa zombini ezi fomu. Hlela abasebenzisi / izimvo.py kwaye wongeze kwimbonakalo.

# Yongeza ezizweni

Siza kudinga itemplate yolu luvo.

nano users/templates/users/profile.html

Uya kuphawula le fom ilula, kodwa inayo i-javascript kuyo isusa ngokuzenzekelayo imixholo yefom njengoko ihlaziywa. Oku kuluncedo ukuba, ke ukwazi ukuhlekisa ngaphandle kokucinezela ukungenisa lonke ixesha.

Okulandelayo, sifuna ii-URLs ezimele zonke ezi mbono kubasebenzisi be-URL. Hlela abasebenzisi / ii-URLs.py kwaye wongeze le khowudi:

# ... Ikhowudi yangaphambili,
# ... Iipateni ze-URL ebesingenise, yongeza imigca emithathu elandelayo

Ngoku lixesha elifanelekileyo lokuvavanya iprojekthi yethu. Kodwa kuqala, masiqhube kolunye ugcino.

backup

Kwaye uqhuba iserver. Ngaphambi kokuba sinxibe iseva yeLinux, ngumbono olungileyo ukwenza izinto ezimbini zezinto kwiakhawunti. Siza kwenza oku ukuya kwiprofayile yethu ye-URL, / abasebenzisi / iprofayile /, kunye nokutshekisha ibhokisi ukwenza ungqinisiso emva kokungena kwinombolo yefowuni, emva koko bangenisa ifom.

python manage.py runserver localhost:8000

Visit the webpage by going to your web browser, I'm using Google Chrome in this example, and entering the URL https://localhost:8000/accounts/profile/

Uya kuba nakho ukungena ungene xa kukho imfuneko kwaye wenze amandla oqinisekiso ezimbini.

Le projekthi ifuna iseva ukuba iqhubeke ukuze ithumele i-imeyile. Kodwa kuqala, sifuna indlela yokubona iimpazamo. Uyakuqaphela ukuba ukuba uqhuba iserver kwimodi ye-Debug, kunye noSeto.Debug alingana nenyani, umncedisi ubonakalisa iimpazamo ngokuzenzekelayo. Ukubonisa iimpazamo ngaphandle kokusebenzisa imowudi ye-Debug, engakhuselekanga kwiseva yemveliso, kufuneka songeze umbono wayo. Ezona mpazamo zibalulekileyo kufuneka sikwazi ukuphatha:

Impazamo 500 - Ingxaki yeKhowudi yethu Impazamo 404 - Iphepha elingafunyanwanga (i-URL eyaphukileyo) Impazamo 403 - Imvume evalelwe

Makhe songeze i-app entsha yokusombulula ezi mpazamo, ezibizwa ngokuba ziimpazamo.

python manage.py startapp errors

Yongeza oku kwisetingi.UP njengoko sasisenza ngaphambili, kwi-propused_apps, kwaye saqala ngokongeza izingqinisiso kwezinye iimbono kwiprojekthi yakho ye-DJAONO.

handler404 = 'errors.views.handler404'
handler500 = 'errors.views.handler500'
handler403 = 'errors.views.handler403'

Yiyo yonke le nto esiyifunayo ngaphandle kokujonga iimpazamo, iitemplate kunye nendawo encinci yendawo encinci. Masichaze ezo:

# Yenza izimvo zakho apha.

Okulandelayo, masichaze i-Mistdware ukuya kuthi ga kwimpazamo. Siza kuyenza le nto ngokuqala ukongeza i-Middlere_cals kwisetingile.py, ngegama lendawo yethu.

    # ... i-Middler

Okulandelayo, masidibanise i-Mistringware.

from threading import local
import traceback
from django.utils.deprecation import MiddlewareMixin

_error = local()

class ExceptionVerboseMiddleware(MiddlewareMixin):
    def process_exception(self, request, exception):
        _error.value = traceback.format_exc()

def get_current_exception():
    try:
        return _error.value
    except AttributeError:
        return None

def set_current_exception(exception):
    try:
        _error.value = exception
    except AttributeError:
        print('Attribute error setting exception.')

Songeza umsebenzi wokufumana ngaphandle kwe-OKONE ngokusebenzisa intambo yendawo, enceda ukuba silandele naziphi na iimpazamo kwikhowudi yethu. Malunga neetemplate, sifuna kuphela enye, kuba sichaza isihloko kwimbonakalo. Itemplate ifuna nje ukunikezela isihloko kunye "Trace", isiphoso sethu sokubuyisa kumxholo.

nano errors/templates/errors/error.html

Le yeyona template yethu ilula, kodwa yindlela ekulula ngayo ukubona iimpazamo kwiprojekthi yethu. Emva koko, masikhubaze i-debug kwiseto.

nano app/settings.py

Fumana lo mgca apho kusenziwa khona, kwaye uyitshintshe inyani

DEBUG = False

Qhubeka kwaye ugcine i-app ngoku. Sikulungele ukuhambisa kwiseva yeLinux I-Linux, kwaye siqhubeke nokongeza izinto ukusuka apho.

sudo backup

Ngaphambi kokuba sithumele le khowudi kwiseva, kufuneka siqwalasele ukuba kunokubakho imiba ngeKhowudi. Kuxhomekeka kwityala, iisayithi ezivuma ulwazi ezithunyelwe kubo ziya kuba nemicimbi ebhalwe nge-spam iposwe kwaye ubunzima bokususa i-spam. Oku akufuneki kwenzeke ngokukhawuleza, kodwa ukuba iyenzeka, siza kujonga emva kokumoda kwi-spam kule ndawo kwaye iqinisekise ukuba iskena yesazisi okanye i-scametric scarprint okanye i-birprint ye-biometric, njengomnwe we-biometric, njengomnwe.

Ukujonga izinto ezininzi zokuqinisekisa umzekelo, xa sivavanywa, kwimveliso, izinto zinokwahluka. Qaphela ukuba silinganisa njani i-logons zokunciphisa iilogo, kwaye ikhuphe ithokheni. Ukuba iirobhothi zifikelela kwindawo, ukungqinisisa kwezinto ezimbini kunokuba nzima njengoko kunokungena kwiikhowudi kwangaxeshanye umsebenzisi. Ukulwa oku, masisebenzise imodeli kwimodeli yomsebenzisi, ivakalisa ukuba sinxibelelana njani nendawo xa siqinisekiswa kusetyenziswa isiqinisekiso sezinto ezininzi ngenombolo yefowuni. Siya kongeza ukhetho lokuqinisekisa nge-imeyile. Qala ngokuhlela iimodeli zomsebenzisi nge-nano.

nano users/models.py

Yiyo loo nto imodeli esikongeza ngayo kufuneka ibonakale ngathi. Asidingi iindlela, izinto eziguquguqukayo nje zokugcina i-id, umsebenzisi, umlinganiso wexesha, ubude kunye ne-123456 ethunyelwe kwifowuni okanye i-imeyile).

# Ithokheni esisiseko esetyenziselwa ukungena kwiwebhusayithi

Makhe songeze ilungelo kumsebenzisi wethu, kwaye siya kuyibeka ngesandla ngoku, ngaphambi kokuba sifudukele ekufudukeni abasebenzisi abanelungelo ngenjongo. Kwimodeli yomsebenzisi, yongeza le mgca kwiprofayili:

    vendor = models.BooleanField(default=False)

Njengalo naluphi na utshintsho kwiziko ledatha, kufuneka senze ukufuduka kwaye sifuduke idatha yedatha ngalo naliphi na ixesha lokuhlela imodeli.py Ifayile kwi-DJANGO. Khumbula, ukwenza oku sisebenzisa umthombo wokuqala (ukuba awuzange usetyenziswe okoko i-terminal ivuliwe) kwaye emva koko iPython.py ukwenza ukufuduka kunye nokufuduka.

cd project-directory-you-named # (ukuba iyafuneka)

Okwangoku, unokufaka iiakhawunti ozinzileyo njengabathengisi ngokusebenzisa iqokobhe.

python manage.py shell
from users.models import Profile
p = Profile.objects.get(user__username='Charlotte')
p.vendor = True
p.save()
exit()

Ngoku, masivelise imbonakalo yethu yezinto ezininzi zokuqiniseka ukuze ndisebenzise lo Mqondiso. Okokuqala, kufuneka siguqule izinto zethu ze-MFA yethu. Usebenzisa i-nano,

nano users/mfa.py
from django.utils import timezone
import random
import datetime
from django.conf import settings
from feed.middleware import get_current_request
from django.contrib import messages
from .email import send_html_email
import traceback
from .models import MFAToken

account_sid = settings.TWILIO_ACCOUNT_SID
auth_token = settings.TWILIO_AUTH_TOKEN
source_phone = settings.PHONE_NUMBER

def send_text(target_phone, text):
    from twilio.rest import Client
    try:
        client = Client(account_sid, auth_token)
        if len(target_phone) >= 11:
            message = client.messages.create(
                to=target_phone,
                from_=source_phone,
                body=text + ' Text STOP to cancel.')
    except:
        messages.warning(get_current_request(), 'There was an error sending the message.')
        print(traceback.format_exc())

def get_num_length(num, length):
    n = ''
    for x in range(length):
        n = n + str(num)
    return int(n)

def send_verification_text(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_user_text(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)))

def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))

def send_user_text(user, text):
    send_text(user.profile.phone_number, text)

def check_verification_code(user, token, code):
    token.attempts = token.attempts + 1
    profile = user.profile
    result = (token != None and code != '' and token.token == code and (token.expires > timezone.now()) and token.attempts <= settings.MFA_TOKEN_ATTEMPTS)
    if token.attempts < 3 and result:
        profile.verification_code_length = 6
    elif token.attempts > 1 and not result:
        profile.verification_code_length = profile.verification_code_length + 2
        if profile.verification_code_length > settings.MFA_TOKEN_LENGTH: profile.verification_code_length = settings.MFA_TOKEN_LENGTH
    token.save()
    profile.save()
    return result
# Qinisekisa umsebenzisi usebenzisa i-imeyile okanye inombolo yefowuni
    token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Isihluzi sethokheni lixabiso elidluliselwe kwi-URL (i-UUID)
    if not token: token = MFAToken.objects.create(user=User.objects.filter(profile__uuid=username).first(), uid=username, expires=timezone.now() + datetime.timedelta(seconds=115)) # Ukuba le seshoni ayikhange yenziwe, yinze
    user = User.objects.filter(id=token.user.id).first() # Fumana umsebenzisi kwithokheni
    if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Ukuba sele ziqinisekisiwe, zingene ngaphakathi
    if not user: raise PermissionDenied() # Kuyakhaba ukuba akukho msebenzisi wafunyanwa
    if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # Jonga ithokheni
        auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Ngena kumsebenzisi ukuba ayisebenzi ngaphakathi
        user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # Seta ukuphelelwa kwisiqinisekiso sabo sezinto ezininzi
        return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # Thumela umsebenzisi kwiphepha elilandelayo
    if not user.profile.mfa_enabled: # Jonga ukuba i-MFA inikwe amandla
        if not check_verification_time(user, token): # Jonga ixesha
            user.profile.mfa_enabled = False # Cima inombolo yefowuni
            user.profile.enable_two_factor_authentication = True # Yenza i-MFA
            user.profile.phone_number = '+1' # Khubaza inombolo yefowuni
            user.profile.save() # Gcina iprofayili
            auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Ngenisa umsebenzisi ukuba i-MFA yabo ayisebenzi
    if request.method == 'POST' and not fraud_detect(request, True): # Ukuba isicelo sisicelo sokuqala
        form = TfaForm(request.POST) # Yenza ifom
        code = str(form.data.get('code', None)) # Fumana ikhowudi
        if code and code != '' and code != None: # Qinisekisa ukuba ayinanto
            token_validated = user.profile.check_auth_token(usertoken) # Jonga ithokheni
            is_verified = check_verification_code(user, token, code) # Jonga ikhowudi
            if token_validated: # Ukuba yonke into
                if is_verified: # Ulungelelwano
                    user.profile.mfa_enabled = True # Yenza i-MFA (ukuba ayisebenzi)
                    auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Ngena kumsebenzisi
                    for key, value in request.GET.items(): # Yakha umbuzo kwiParameter elandelayo (ukuba ikhona)
                        return HttpResponseRedirect(next) # Thumela kwakhona
            elif not token_validated: # Ukuba ithokheni ayisebenzi
            if p.mfa_attempts > 3: # Ukuba bekukho imizamo emininzi kakhulu
            if form.data.get('send_email', False): # Thumela i-imeyile (okanye isicatshulwa)
    # Ukunikezelwa kwefom (yezicelo ze-fumana)

Xa sisongeza kule khowudi, qinisekisa ukuba ungenisa umsebenzi ukuthumela i-imeyile. Phezu kwefayile, izimvo zomsebenzisi (kunye nolunye ungeniso), zongeza

from .mfa import send_verification_email as send_mfa_verification_email

Ngoku, kufuneka sibhale lo msebenzi ngaphambi kokuba kusebenze nantoni na. Kufuneka yandise umsebenzi wethu we-imeyile, kwaye uthumele i-imeyile kumsebenzisi ngekhowudi yokuqinisekisa.

nano users/mfa.py
def send_verification_email(user, token):
    length = user.profile.verification_code_length
    code = random.randint(get_num_length(1, length), get_num_length(9, length));
    token.token = code
    token.expires = timezone.now() + datetime.timedelta(minutes=settings.AUTH_VALID_MINUTES)
    token.save()
    send_html_email(user, "Your verification code for {} is {}".format(settings.SITE_NAME, str(code)), "<p>Dear {},</p><p>Your verification code for {} is {}. Thank you for using this code to secure your account.</p><h2>{}</h2><p>Sincerely, {}</p>".format(user.profile.name, settings.SITE_NAME, str(code), str(code), settings.SITE_NAME))

Ke le misebenzi yonke le misebenzi inkulu, sinenkqubo yokungqinisisa abaninzi exhomekeke kwinombolo yefowuni okanye i-imeyile ukuze ungene. Kodwa sifuna indlela yokususa, okanye ubuncinci abasebenzisi abangasebenziyo. Oku kunokuba yi-spammers, iirobhothi okanye nabani na ongathethi kakuhle kumsebenzi wethu. Jonga umbono endikuyo ukuze ndibejonge abasebenzisi kwiwebhusayithi yam:

# ukungenisa
from .tests import is_superuser_or_vendor # Kuya kufuneka senze olu vavanyo
    # Fumana uluhlu lwabasebenzisi
    return render(request, 'users/users.html', { # Buyisa abasebenzisi kwitemplate

Qaphela ukuba le khowudi isebenzisa uvavanyo, kuya kufuneka sibhengeze olu vavanyo kwiimvavanyo.py zefayile kwaye ungenise. Abasebenzisi bokuhlela / iimvavanyo.py, masize kudale uvavanyo.

def is_superuser_or_vendor(user):
    return user.profile.vendor or user.is_superuser

Oku kubadibene nabasebenzisi / abasebenzisi.html template, ejonge into enje:

Qaphela ukuba itemplate ibandakanya enye itemplate, abasebenzisi /umsebenzisi.html. Xa usebenzisa itemplate enomkhandlela ongaphantsi komhlaba kwaye ungasebenzisi imbono yayo, imbono yayo elungileyo yokongeza i-odolo () Phambi kwegama lefayile yokwandisa, ukuze ukwazi ukwahlula iitemplate.

Qaphela ukuba le yi-jinja eninzi, usenokungabi nazo zonke ezi zinto zibonakalayo. Kodwa yile nto ikhowudi yam ikhangeleka ngathi.

      <small># {{Umsebenzisi.id}} </ incinci>

Sikwafuna enye iplate yokuqulunqa i-Sumatmer, i-TOGG GETGE.HTML. Le template ifanele ibe yifom evumela ukuba sikhangele ukuba ngaba umsebenzisi uyasebenza.

Kuya kufuneka songeze umbono wokutshintsha umsebenzi womsebenzisi, kunye neepateni ezifanelekileyo ze-URL. Ngelixa sikulo, masingeze umbono wokucima umsebenzisi kwimeko apho sifuna loo nto.

# Ukungenisa
    success_url = '/' # Iphinde ibuyiselwe kwi-URL yempumelelo
    def test_func(self): # Vavanya ukuba umsebenzisi nguSuperuser kwaye unemvume yokucima

Ngelixa oku kuyasebenza xa kufanelekile, ukucima umsebenzisi akufuneki ukuba kungayimfuneko kangangexesha elithile, sinokutshintsha nje ukubonakala kwabasebenzisi abatyelele le ndawo ukuba kufuneka sibagxothe.

Iipateni ze-URL esiyengezelayo zikhangeleka ngolu hlobo. Nge-nano, hlela abasebenzisi / ii-URLS.PY kwaye bongeze le migca:

nano users/urls.py

Imigca kufuneka ihambe kuluhlu lweendlela kwizimvo zomsebenzisi, ngaphambi kokuphela "]" Kodwa emva kokuqala "[".

# ...
# ...

Ngoku, qiniseka ukuba ubuyisela indawo ukuze uyikhuphele kwiseva yewebhu Siza kuqhubeka nokusebenza. Kumgca wokuyalela,

sudo backup

Ngoku indawo yethu ixhaswa.

Ke ngoku sinezinto ezimbalwa eziluncedo ngakumbi. Kodwa kuthekani ngomfanekiso omkhulu apha? Le khowudi ayifikeleleki kwi-Intanethi, akukho seva yeposi okwangoku, kwaye kufuneka sandise i-App yethu ukubandakanya inkqubo yokuqinisekisa ebanzi kunye nendlela efanelekileyo yokusinceda ukuba siphonononge indawo, kunye neeprothokholi ezikhuselekileyo zokubonisa abasebenzisi abakufuphi.

Siya kufumana konke oku. Eyona nto ibaluleke kakhulu ngoku iya kuba yi-intanethi kwi-Intanethi, esinokuyenza ngemigca nje embalwa ye-bash kwiseva ye-Ubuntu. Kuya kufuneka ukuqesha iseva yoku, ngaphandle kokuba unomncedisi ekhaya kunye nobhaliso lwe-Intanethi kwi-Intanethi ekuvumela ukuba uvule amazibuko. Ndiyibale iwebhusayithi yam kwi-HP Z440 efakwe kwindlu yam, kodwa ihlala inqabile kwiimfuno ezisisiseko zokuqesha iseva yabucala (VPS).

Gcina ukhumbula ukuba ikhowudi esiyisebenzayo ngoku ityebile, kuya kufuneka igcinwe kwaye iphuculwe ngaphambi kokuba sikulungele ukwenza imveliso. Qiniseka ukuba ulumkele into oyenzayo nge-Intanethi, qiniseka ukuba uyayibeka esi sizalweni esidlangalaleni kwiwebhu kwiseva yeLinux, unesicwangciso sokuthintela ukusebenzisana okungafunekiyo newebhusayithi yakho. Oku kungenzeka ukuba yingxaki ekuqaleni, kodwa siza kujonga kwizisombululo ezahlukeneyo zokulwa oku, kubandakanya ukufunda umatshini wokufunda, ubukrelekrele bobukrelekrele kunye nombono wekhompyuter. Xa iba yingxaki, jonga ngakumbi kwesi sisombululo.

Ngokuphathelele ukurenta i-VPS, zininzi iindawo onokuya kuzo. Ifu likaGoogle ineeseva ze-VPS, iOnos, Kamatera, iAmazon Aws, kunye nababoneleli abangaphezulu banika izisombululo zeseva zelifu eziya kuhambelana neemfuno zethu.

Kuya kufuneka ucofe iifom zazo kwaye ukhethe icebo lokuqalisa. Ungahamba nesicwangciso esisiseko ngayo nawuphi na umboneleli, kodwa qiniseka ukuba umnikezeli uvumela ukuba uvulele amazibuko kwi-port ye-Port ukuthumela i-imeyile (le nto ifanele ibe yi-Port 587, abanye ababoneleli bakuthintele la mabuko. Ukuza kuthi ga ngoku ndinamava awona mava kunye ne-Ionos kunye neKaatera, zombini ziya kundivumela ukuba ndithumele i-imeyile engenamda kunye namaxabiso aphantsi kakhulu.

Uya kuqhagamshela kwiseva yakho entsha ngaphezulu komgaqo ophambili obizwa ngokuba yi-Ssh okanye iqokobhe ekhuselekileyo, evumela ukuba uhambelane ne-interface ngokude nekhompyuter yakho, kwikhompyuter yakho. Xa useka iserver, umniki-mbambano usenokuba uza kukucela ukuba wongeze iqhosha le-ssh, okanye baya kukunika igama lomsebenzisi kunye negama lokugqitha. Isitshixo se-Ssh yindlela oza kungena kwiseva kumgca wokuyalela ukuze uhlele ikhowudi. Sebenzisa iinketho ze-ssh-shogeji yokuvelisa iqhosha leSH.

ssh-keygen

Gcina ifayile kwaye uyibhale ngaphezulu ukuba ufuna, kulungile ukujikeleza amaqhosha e-ssh ukuba awukabikho. Ngoku, ungawusebenzisa lo myalelo ulandelayo ukubona iqhosha lakho leSH. Uya kufuna ukukopa kwiseva yakho ekude ukuze uyisebenzise ukuze iqinisekiswe.

cat ~/.ssh/id_rsa.pub

Ukuba awukwazi ukubona iqhosha le-ssh xa uchwetheza lo myalelo (umtya omde weenombolo kunye neeleta eziqala "ukhuselekile ukuba uzisebenzise.) Le khowudi ilandelayo iya kuvelisa isitshixo se-4096 ye-RSA Ssh.

ssh-keygen -t rsa -b 4096

Yenza i-VPS eSebenza ubuntu, nangona kunjalo uceba ukwenza oku. Once you have created a VPS by clicking through the forms on the providers website (kamatera.com, ionos.com or similar), you'll want to log in. To do this, use the ssh command with your IP address (the address that looks like XX.XX.XX.XX). Kuya kufuneka ukhathalele igama lomsebenzisi elingaphezulu kwiseva esidalileyo, umzekelo, ubuntu.

ssh ubuntu@XX.XX.XX.XX

Unokucelwa ukuba ungene kwi-password, ukuba ucelwe ipaswedi, faka ngaphakathi. Asizukusebenzisa igama lomsebenzisi elingagqibekanga, ke masiqale ngokwenza umsebenzisi omtsha kwaye songeze iqhosha le-SSS kwiakhawunti yabo.

Masiqalise ukongeza ifayile entsha ye-sshd_config, exelela iseva indlela yokusebenzisa i-SSH.

nano sshd_config
# Le yifayile ye-SSHD yenkqubo yoqwalaselo lwefayile.  Funda
# i-sshd_config (5) ngolwazi oluthe kratya.
# Le sshd yaqulunqwa nendlela = / i-USR / ingingqi / sbin: / i-USR / i-USR / i-USR / i-USR: / i-bin / imidlalo / i-bin / imidlalo / imidlalo
# Isicwangciso esisetyenziselwa ukukhetha kwi-SSHD_CONFIG ikhutshelwe nge
# I-OpenSsh ichaza ukhetho ngexabiso labo elisisiseko apho
# kunokwenzeka, kodwa ubashiye bagqabaze.  Ukukhetha okungafunisi ngaphezulu kwe
# Ixabiso elingagqibekanga.
# I-Port 22
# Ngefowuni
# Umamela 0.0.0.0
# Umamela ::
# Inkosi / njl / ssh / ssh_host_ersa_y
# Inkosi / njl / ssh / ssh_host_sedsa_y
# Inkosi / njl / ssh / ssh_host_ed25519_Ky
# I-cipheshers kunye nesitshixo
# I-Redeylimit engagqibekanga
# Ukungena
# I-syslogity auth
# Ulwazi lwe-LOGLEVEL
# Uqinisekiso:
# I-LogingraceT 2m
# I-PRECROOOOOOOOOOOTLOLOT-Password-password
# I-STREMODES
# I-maxauthties 6
# I-maxsesses 10
# Lindela .Sh / igunya_kokoyiswa2 ukuba ungahoywa ngokungagqibekanga kwixesha elizayo.
# AmaGcinorizisi
# I-ofisi yeKigadidycomffand Akukho
# IGOUNGISTUSMFAMAUSER AKUKHO
# Ukulungiselela oku ukusebenza uya kusebenza kuya kufuna amaqhosha omzisi kwi / njly / ssh / ssh_ishts
# Ungqinisiso hayi
# Guqula kuye ewe ukuba awuthemba ~ / .Sh / yaziwa
# Ungqinisiso
# Ifoto
# Sukufunda umsebenzisi ~ / ~.
# Ingakhathalele
# Ukukhubaza ukucocwa kweephasiwedi ezicacileyo, ukutshintsha ku-Hayi apha!
# I-PermitemptyPasswords hayi
# Guqula ukuba ewe ukwenza imvume yokujonga umngeni-mpendulo (Gcwalisa imicimbi ye
# ezinye iimodyuli zePam kunye nemisonto)
# Iinketho zeKerberos
# I-Kerberosaut yakho
# IKerberosocallocalpalpha
# I-Kerberostistickistististististickistick Ewe
# I-Kerberosgegetafstoke
# Iinketho ze-GSSSS
# I-GsSSISIATIVE HAYI
# I-GSSSCINUCTECENTENUTENEALS Ewe
# I-GsSSSISTACTEPCCHCHCHCHCHCHCK
# Gsshapikeexchange
# Cwangcisa oku 'ewe' ukwenzela ukuqinisekiswa kwe-pam, ukulungiswa kweakhawunti,
# kunye nokulungiswa kweseshoni. Ukuba oku kuyenziwa, ukuqinisekiswa kwe-pam kuya
# ivunyelwe ngokusebenzisa i-kbdinteractiveactiveactivieactiveactiveactivelogriveractiveactivelogriveractiveactivelogriveriveractiveactivelogriveractiveactivelogriveractiveactivelogrivelogrivelogriveractiveactivelogriveractiveactivelogriveractiveactiveactivelogrivelogriveriveractiveactivelogriveractiveactivelogriveraction
# I-paidimercargiver.  Kuxhomekeka kugcino lwakho lwePAM,
# Ukungqinisisa i-PAM ngeKbdinteActiveAgeAgeAgeAgeAgeAgeATeAss kungadlula
# Ukuseta 'kwi-PRVROOOTLOLOGN ngaphandle kwegama eligqithisiweyo ".
# Ukuba ufuna nje i-akhawunti ye-PAM kunye neseshoni yokujonga ukubaleka ngaphandle
# Ukungqinisisa kwe-PAM, emva koko ke yenza le nto kwaye ubeke i-paidiment
# kunye ne-kbdinteractiveactiveactiveloutarIner kwi 'hayi'.
# Ukuvumela ukungena Ewe
# Ukuvumela ukuba ewe
# Isango
# X11displayoff i-10
# X11chastalThost ewe
# Vumela i-ewe
# Printastlog ewe
# I-TCPEALIALEEWE Ewe
# UCwangciso
# Ukulibaziseka kokulibaziseka
# Izicelo zabasebenzi 0
# I-CREREDEATMAX 3
# ISetshi
# Pidfile /run/sshd.pid
# I-maxstartups 10: 30: 100
# Imvumi hayi
# I-chrootdirectory akukho
# Inguqulelo yenguqulo
# Akukho ndlela ye-BANEY ye-BANE
# Vumela umxhasi ukuba aphumelele kwimo yendawo yeva
# ngaphezulu kokungagqibekanga kwazisekho senkqubo
# Umzekelo wokuseta ogqithileyo kwisiseko somsebenzisi ngamnye
# Tshatisa uMsebenzisi Anoncvs
# X11) hayi
# Ukuvumela ukuvumela
# Mvumeli hayi
# I-Consercocommand CVS Server

Khumbula, i-CTRL + X kunye Y ukugcina ifayile. Emva koko, masibhale iskripthi esiyisiseko ebizwa ngokuba qala (sonke kwisalathiso esingagqibekanga sekhaya).

nano initialize

Yongeza le migca kwifayile, ukutshintshaNgesitshixo sakho se-ssh oyifumene usebenzisa ikati. (.Sh / id_rsa.pub)

# ! / bin / bash

Ukuhamba ngale fayile, masiqale umgca ngumgca. Umgca wokuqala uxelela umhlanganisi ukuba le yiskripthi se-bash. Emva koko sifaka ukuxhomekeka, ukukopa i-sshd_config kulawulo oluchanekileyo, ukuqalisa kwakhona i-SSS, ukuvelisa amaqhosha e-Ssh, ukuvelisa igama lomsebenzisi ' Sikwakongeza iqela kwiqela leShudo, kuvelise iqhosha labo leSSH, yongeza isitshixo sezinto ezigunyazisiweyo kunye nezitshixo zabo kunye nezabo ngokunjalo, kwaye ziprinte isitshixo sabo. Lo msebenzisi mtsha uya kuba njani kwisayithi.

Kwisiphelo esitsha, qhubeka kwaye uvule iserver kwakhona.

ssh team@XX.XX.XX.XX

Akufanelanga ukuba ufuna ipassword ngeli xesha, ukuba njengokuba uneqhosha le-ssh. Sikukhubazekile ngemvume ngephasiwedi ukugcina indawo ikhuseleke ngakumbi.

Ngoku, le seva iqala ngokupheleleyo engenalwazi ngaphandle kwengcaciso kuyo. Masiqalise ngokuvula iprojekthi yethu evela kwi-git ukuze sikhuphele kwaye siyibale kumatshini okude. Kwiseva ekude edityaniswe ngaphezulu kwe-SSS, uprinte kuqala i-SSH yakho:

cat ~/.ssh/id_rsa.pub

Emva koko, uncamathisele le qhosha kwisakhelo seGit ngokungathi senze ngaphambili ukuseta indawo yethu ye-GIT. Ngoku sinokuthi iphule iprojekthi yethu ngqo kwiserver. Qiniseka ukuba uyigcinile iprojekthi ekuhlaleni kuqala ngoko ikwiseva ye-git ukukhuphela.

git clone git://github.com/you/yourproject.git

Igqibelele. Ngoku zonke iifayile zilapha. Singababona nge-LS

ls

Ngoku, masiqale ukuseta iseva. Okokuqala, kOpuko isikhombisi sakho seProjekthi kwigama elilula, elingenakukhumbuleka esiya kuyisebenzisa le projekthi.

cp -r yourproject whatyoucalledit

PHI "I-OKONICATEN" ligama elitsha leprojekthi yakho. Okulandelayo, kuya kufuneka sakhe indawo esisiseko yokuseta iseva. Siza kusindisa le nto kwaye siyisebenzise kwixesha elizayo. Ukwakha le nto, masidala umsebenzisi Sebenzisa i-bash, hlela / i-USR / bin / i-ascript

sudo nano /usr/bin/ascript

Qiniseka ukuba usebenzisa i-sudo apho unemvume yokuhlela ifayile. Kwifayile, yongeza le migca:

# ! / bin / bash
    echo "# ! / bin / bash ">> / i-USR / Bin / $ 1

Khumbula le ncwadi ithatha impikiswano, iskripthi, njenge- $ 1. Okokuqala ijonga ukuba ifayile ikhona, okanye ngenye indlela iyenza loo nto, yongeza umgca wokuqala ukubhengeza iScripthi, iguqula imvume, kwaye yongeze amagama ayo, kwaye yongeza amagama ayo adalayo. Ukuba ifayile sele ikhona, tshintsha imvume kwaye uyihlele. Gcina ifayile, kwaye emva koko siza kuyitshintsha imvume. Ngalo lonke ixesha sisebenzisa le ngcaciso, akuyi kufuneka siyenze loo nto.

sudo chmod a+x /usr/bin/ascript

Igqibelele. Ngoku masidala iskripthi esibizwa ngokuba sisicwangciso. Okokuqala, ungangakhathali, kodwa jonga into ebukeka ngayo ishumayelo yam. Siza kuhamba malunga nesi sicatshulwa esifanele sijongeke njani kwiprojekthi yakho, awuyi kufuna yonke into kwiskripthi sam ukuqala ngayo.

# ! / bin / bash
# Sudo chmod A + x Izikripthi / ikhobathisi
# ./scripts/useersep
# I-Ssh-Innegen
# Ulawulo lweProjekthi
# Imiyalelo yeLog
# Qwalasela
# Qwalasela
# Hlaziya kwaye ufake
# Yenza i-Clamav Antivirus
# Cwangcisa igama lenginginya
# Cwangcisa i-Postgsres
# Cwangcisa ugcino lwedatha
# Khubaza iimvavanyo
# Faka i-bitdefer
# Cwangcisa iposti
# Yenza ubudlobo
# Cwangcisa i-Dictusalenv
# Fumana kwaye wakhe ukuxhomekeka
# Seta imithetho ye-firewall
# Faka ukuxhomekeka kwe-PYPI
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# Faka i-Pip Phunga i-OpenCv-Python == 4.5.5.64
# Faka i-Pip Phunga i-OpenCV-Python == 4.5.5.64
# Faka i-quartbot
# Gijima kwiQela
# Phinda ulayishe iseva yeposi
# Khuphela iziqinisekiso
# Sudo CP
# Sudo CP
# Patch vevv
# Cwangcisa useto lomsebenzisi
# Cwangcisa Iimvume
# IQela leSudo Lwar
# Ingcambu ye-Sudo Chown: Ingcambu / Run / Sudo / TS -R
# sudo chmod 664 db.qlite3
# I-Sudo Chown Www-Data: Abasebenzisi db.qlite3
# Khuphela i-Confition kunye neMvume
# Cwangcisa idatha
# Qatha i-dam cocier kwaye ususe i-Ssh i-SSH
# sudo sed -i '-e' $ d '/etc/pam.d/sshd
# Sudo Sd -i '-e' $ d '/ njl / profayile
# Khuphela iincwadi zeepripthi ze-bin kunye neemvume ezibekiweyo
# Layisha kwakhona kwaye wenze iinkonzo
# Yenza iimodyuli zeapache
# Sudo A2dismm_event
# sudo a2dismd mpm_work
# Sudo A2nmod MPM_POPORK
# Khubaza indawo emiselweyo
# Yenza indawo yethu
# Phinda ulayishe i-daemon kunye nokufumana i-Apache, i-Postfix kunye ne-openkim
# Cwangcisa Iimvume
# Uqwalaselo oluShangisiweyo
# I-init ye-injini
# Cwangcisa i-git
# Veza iPV6 kunye ne-OpenKim yoqwalaselo lwe-domain
# Ukuseta kugqityiwe

Kukuseta okuninzi! Ngamafutshane, le khowudi yemiyalelo yekhowudi, lungiselela i-NAno kunye ne-git, ikopi yefayile, inyanzelisa i-Antivix, iKhoboshela i-PROSTRESS, icwangcisa i-AtvirusX Umncedisi, ukufaka ucwangciso loqwalaselo, uqala kwaye wenze i-switch, i-swapp, ibeka iimvume, kwaye iprinta idilesi ye-IP, idilesi ye-IPv6. Ilula ngokufanelekileyo, kodwa ijongeka ngathi yikhowudi eninzi. Asiyi kufuna kakhulu le nto kuba asinawo nakuphi na ukuxhomekeka, asisebenzisi i-celery, i-celeryry okanye i-Daphne, kodwa siza kufaka ezinye zazo ukuba ziqalise. Qaphela ukuba le khowudi inesizinda esivakaliswa izihlandlo ezininzi.

Kuya kufuneka nokuthenga igama le-domain (eliyimali encinci yonyaka). Ndicebise indawo yokuthenga isikwere sokuthenga i-domain, ubume babo bungabantu abazisebenzisayo kwaye kulula ukuzisebenzisa. Ungayithenga nayiphi na i-domain oyithandayo, kodwa ndisebenzisa i-domemebabe.com kulo mzekelo. Nje ukuba uthenge isizinda, intloko ukuya kwi-DNSpace DNS yoqwalaselo lwe-DNS kwaye yongeze irekhodi elibonisa i-domain yakho kwiseva yedilesi ye-IP. Imele ibonakale ngoluhlobo:

@ A xx.xx.xx.xx

Ndikunye no-Operator njengomhlangi, othetha zonke ii-subdominas phantsi kwaloo doma kunye ne-domain yengcambu iya kubhekisa kwiseva. Kukho iirekhodi ezingaphezulu zokubhengeza, kodwa sinokuqhubela phambili kwezi zinto sikulungele ukuthumela i-imeyile. Gcina engqondweni, inokuthatha iintsuku ezininzi ngaphambi kokuba ukwazi ukuthumela nge-imeyile kwiseva. Iirekhodi ze-DNS esizibekileyo ziya kuthatha ixesha lokusasaza.

Ngapha koko, irekhodi kuphela esifuna ukuyiqala yingxelo. Ke ngoku sinokugcwalisa esi sitshixo singezantsi ngokweprojekthi yethu kwaye siyibale.

Masiqale nge-script encinci yokuseta ukuze sifake nje into esiyifunayo kwinkqubela phambili esisiseko. Asizukusebenzisa kakhulu ukuxhomekeka okanye ipostiqlsql okwangoku, siya kuqala nje i-server yesiseko ye-HTTP kwaye ikhathazeke xa isenziwa. Khumbula, ukufumana isatifikethi se-HTTPS kwaye sibaleke iserver ngokukhuselekileyo, kuya kufuneka sithenge isizinda kunye nerente kwiseva. Okwangoku, thatha indawo "yeQela" kule fayile ngegama lomsebenzisi wakho, "dir" ngoncwadi lweprojekthi yakho, kwaye unike i-imeyile yakho kwi-imeyile kwi <> tag.

Ukongeza, ngaphambi kokuba siqhube le Khowudi, kufuneka sitshintshe useto kwi-firewall umniki-kwabaninisi bayazixhasa, ukuba ikhona. Ngokwesiqhelo oku kwi-'tworks 'ithebhu yomnikezeli wakho wokubamba, okanye ukuba uzisingathelisa, kwicandelo le-'Port Ressing' le-router yakho. Uya kufuna nokuseta i-IP static kwi-router yakho ngedilesi yomsebenzi wakho weseva, ukuba usebenzisa ukuzisindisa. Kuya kufuneka uvule ezi zibuko zilandelayo zokufunda / zokufunda.

22 (ssh) 25 (I-imeyile) I-587 (i-imeyile) I-110 (umxhasi weposi) I-80 (http) 443 (https)

# ! / bin / bash
# Imiyalelo yeLog
# Qwalasela
# Qwalasela
# Hlaziya kwaye ufake
# Yenza i-Clamav Antivirus
# Cwangcisa igama lenginginya
# Cwangcisa ugcino lwedatha
# Khubaza iimvavanyo
# Cwangcisa i-Dictusalenv
# Faka i-quartbot
# Gijima kwiQela
# Cwangcisa useto lomsebenzisi
# Cwangcisa Iimvume
# IQela leSudo Lwar
# Ingcambu ye-Sudo Chown: Ingcambu / Run / Sudo / TS -R
# Layisha kwakhona kwaye wenze iinkonzo
# Yenza iimodyuli zeapache
# Phinda ulayishe i-daemon kunye nokufumana i-Apache, i-Postfix kunye ne-openkim
# Veza iPV6 kunye ne-OpenKim yoqwalaselo lwe-domain

Ngaphambi kokuqhuba le khowudi, qiniseka ukuba idomeyini oyithengileyo iqhagamshelwe kwiseva. Ukwenza oku, vula i-terminal kumatshini wakho wasekhaya, kwaye uqhuba lo myalelo nge-domain yakho:

ping femmebabe.com # faka i-domain yakho apha, emva kwe-ping

Ukuba yonke ijongeka kakuhle kwaye iseva ithumela iimpendulo, sikulungele ukuqhuba iskripthi kwaye sifake iiphakheji kunye nokuqalisa kwaye ziqinisekise iseva yethu ye-Apache.

Ayisiyonto yonke i-SETUP efunekayo ukumisela i-Postfix, siya kujonga ukuseta okungakumbi kamva. Okwangoku, qhuba le khowudi yokuseta kwaye kufuneka ithathe imizuzu embalwa yokufaka kwaye iqinisekise iseva yakho. Kwakhona, qinisekisa ukutshintsha igama, i-imeyile kunye negama le-domain kwincwadi ebhaliweyo oyithengileyo.

Ngoku ukuba iseva ilungisiwe, ungaya kwi-URL kwi-browser yewebhu kwaye ujonge ukuqinisekisa ukuba iseva isebenza i-HTTPS. Ukuba akunjalo, zama ukulinda okwethutyana kwiirekhodi ze-DNS ukubamba kwaye uqhuba lo myalelo ulandelayo wokuphinda uzame ukuphinda ubuye isiqinisekiso sokugqibela:

sudo certbot --apache --non-interactive --agree-tos --domains <domain>.com --email <youremail>@gmail.com

Logama nje ulungiselele yonke into ngokuchanekileyo, kuya kufuneka ukuba ungene kwiphepha elimiselweyo lika-Abepe ukuze ukwazi ikhowudi yakho isebenza kwaye ibonise iphepha lewebhu eliphilayo. Emva koko, masihlele useto.Upy ukutshintsha imo yethu ye-debug defug. Siza kuqwalasela i-domain kwisethingi, kunye ne-iPS yangaphakathi.

nano yourproject/settings.py

Kwiseto, utshintsho / ukongeza le migca.

# Indawo

Ngoku, kuya kufuneka siqwalasele i-Apache2. Masihlele ifayile yoqwalaselo esiya kuhambisana nomgca:

sudo nano /etc/apache2/sites-available/femmebabe-le-ssl.conf

Le fayile yoqwalaselo kufuneka inikwe igama lethu le-domain kuyo, kunye negama lomsebenzisi kunye neprojekthi. Ndisebenzisa igama le-domemebabe.com, iqela lomsebenzisi, kunye neprojekthi yeprojekthi.

ServerSignature Off
ServerTokens Prod
<IfModule mod_ssl.c>
<VirtualHost *:80> 
	Redirect permanent / https://femmebabe.com/
</VirtualHost>
<VirtualHost *:443>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined
	
	Alias /static /home/team/femmebabe/static
	<Directory /home/team/femmebabe/static>
		Require all granted
	</Directory>

Alias /media/icons /home/team/femmebabe/media/
<Directory /home/team/femmebabe/media>
Require all granted
</Directory>

	<Directory /home/team/femmebabe/femmebabe>
		<Files wsgi.py>
			Require all granted
		</Files>
	</Directory>

	WSGIScriptAlias / /home/team/femmebabe/femmebabe/wsgi.py
	WSGIDaemonProcess femmebabe python-path=/home/team/femmebabe/ python-home=/home/team/femmebabe/venv header-buffer-size=100000000000 user=team
	WSGIProcessGroup femmebabe
	WSGIApplicationGroup %{GLOBAL}
	
	<Directory /home/team/femmebabe/static>
                Options Indexes FollowSymLinks
                AllowOverride All
	</Directory>

	<IfModule mod_rewrite.c>
		RewriteEngine on
		RewriteCond %{REQUEST_URI} \.(css|webp|webm|gif|png|mp3|wav|jpeg|jpg|svg|webp)$ [NC]
		RewriteCond %{HTTP_REFERER} !^https://femmebabe.com/media/.*$ [NC]
		RewriteRule ^(.+?)/$ /media/$1 [F,L]
	</IfModule>

	Include /etc/letsencrypt/options-ssl-apache.conf
	SSLCertificateFile /etc/letsencrypt/live/femmebabe.com/fullchain.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/femmebabe.com/privkey.pem

	Header set X-Frame-Options: "SAMEORIGIN"
	Header set Access-Control-Allow-Origin "https://femmebabe.com"

	TimeOut 60000
	LimitRequestBody 0

	<FilesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|webp|JPG|JPEG|wav|mp3|mp4|public|js|css|swf|webp|svg)$">
		Header set Cache-Control "max-age=30, public"
	</FilesMatch>
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:80>
	ServerName femmebabe.com
	ServerAdmin team@femmebabe.com
	DocumentRoot /var/www/html

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	RewriteEngine on
	RewriteCond %{SERVER_NAME} =femmebabe.com
	RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
</IfModule>

Qiniseka ukuba ukutshintsha igama leprojekthi, ivisi, kunye ne-Domain kule khowudi yomzekelo xa umisela iseva yakho. Ngoku, kuya kufuneka sikhuse indawo engagqibekanga. Oku kunokwenziwa kusetyenziswa i-bash.

sudo a2dissite 000-default-le-ssl
sudo a2dissite 000-default
sudo a2dissite default-ssl

Okulandelayo, singenza ukuba indawo emiselweyo kwaye ilayishe kwakhona iapche2, ikwasebenzisa i-bash. Khumbula ukutshintsha i-fememebabe ngegama lefayile oyichazileyo xa uhlela kwi / njl njl / Appache2 / Apache2 / ekhoyo /.

sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2

Buyela kwi-domain yakho kwi-Navbar. Kuya kufuneka ubone indawo oyicwangcisiweyo kwisikhangeli sakho sewebhu. Sivuyisana! Ukuba awuyiboni, kuya kufuneka wenze utshintsho. Ukuphononongwa ngononophelo useto kwiprojekthi yakho, ukuqulunqwa kwe-Apache, kwaye uqiniseke ukuba awunazo iimpazamo, kwaye uqhuba le miyalelo ilandelayo ukhangela iprojekthi yeempazamo.

cd projectname
source venv/bin/activate
python manage.py check

Ukuba unempazamo kwiprojekthi yakho yePython, ulandele apho bakuyo kwaye uzilungiselele. Awunakho ukubona zonke iimpazamo zakho kuxhomekeka apho bakhoyo, ke ukuba unempazamo ethi nje i-"i-poplell ayisiyo-", hlela le fayile ilandelayo kwindawo ebonakalayo, iRegistry.py, ukubhengeza impazamo.

nano venv/lib/python3.12/site-packages/django/apps/registry.py

Skrolela kumgca we-83, apho le mpazamo ye-hintime iphakanyisiwe (kuphakamisa i-runtimerimer ("ummiselo (), kwaye yongeza intetho phambi komgca, emva koko wongeza i-Indulfigs = {}. Oku kujongeka ngolu hlobo:

                # Thintela iminxeba ye-Recatenant Fund ukunqanda i-Appconfig.ude ()
                # Iindlela kabini.
# Ukuphakamisa i-rundemerimer

Ungayijonga kwakhona le projekthi kwaye ubhenca impazamo.

python manage.py check

Emva koko unokuyibona impazamo kwaye uyilungise. Xa sele uyilungisile kwaye ikhowudi inezimpazamo, qinisekisa ukutshintsha ifayile kwakhona ngoko ikhangeleka ngolu hlobo:

                # Thintela iminxeba ye-Recatenant Fund ukunqanda i-Appconfig.ude ()
                # Iindlela kabini.
# Isiqu sakho.app_configs = {}

Ukubonelela ngeseva kwi-intanethi, xa senza olunye utshintsho kuwo, kufuneka sisebenzise lo myalelo ulandelayo ukuphinda ulayishe iseva:

sudo systemctl reload apache2

Kuhle! Kodwa kuthekani ngokuthumela i-imeyile? Ukuqala ukuthumela i-imeyile, kuya kuqala ukuhlaziya ubumbeko lwe-domain. Oku kufanele ukuba kube kwi-DNS yakho ye-DNS kwindawo yobhaliso, okanye nayiphi na into yobhaliso lwenombolo ye-domain oyithandayo. Kuya kufuneka kwakhona sifake kwaye songeze ubumbeko, kwaye sisebenze imiyalelo embalwa.

Okokuqala, masifumane idilesi ye-IPV6 yeseva. Siya kuthi emva koko sivule i-DNS yakho kwaye songeze iirekhodi.

Ukufumana idilesi ye-IPv6 ye-IPv6, sebenzisa lo myalelo:

ip -6 addr

Ngoku, songeza ezi rekhodi zilandelayo kwizicwangciso ze-DNS. Iirekhodi zam zikhangeleka ngolu hlobo. Nangona kunjalo, kwiirekhodi zakho, kuya kufuneka uthathe indawo yedilesi ye-IP nge-IP yakho (hayi 75.147.18214, yeyam le yeyam). Yongeza i-Domain yakho endaweni ye-femmebabe.com, kunye nedilesi ye-IPV6 yakho efumaneka kumyalelo odlulileyo (awukwazi ukusebenzisa eyam, awukwazi ukusebenzisa eyam, fe80 :: FF69: 3e02). Sukuba nexhala malunga ne-domainkey ngoku, oku kudalwe xa kusenziwa iposi, iseva yeposi, nge-openkim, kwaye iprinte isitshixo. Siya kuqwalasela oku kokugqibela.

@ A N / A 75.147.182.214

@ Mx 10 I-femebabe.com

@ Ptr N / A I-femebabe.com

@ Txt N / A Ttx @ v = spf1 MX Ip75.147.182..2232224 :: 725A: FF69: 3e02 ~

Ukungagqibeki._bimi Txt N / A v = Bimi1; l = https: //femebabe.com/static/static/static/svg

_dmarc Txt N / A v = Dmarc1; p = akukho

I-Sepokonly.mdodoinkey Txt N / A

Ngoku, kuya kufuneka songeze ubumbeko oluqinileyo lwe-psportfix. Into ekufuneka siyenzile kukuqinisekisa ukuba siyibuyisela igama le-domain, i-femebabe.com, ngegama le-domain oyisebenzisayo. Makhe sijonge zonke iifayile zombhalo nganye nganye, kwaye uzifake kwisalathiso esibizwa ngokuba yiFowuni kwiprojekthi yethu, yokufaka kwi-OS.

nano config/etc_postfix_main.cf

Yongeza lo mbhalo kwifayile

# Jonga u /srr/Share/postfix/main.cf.cff ye-Conced, epheleleyo
# I-Debian Icacile: Ukucacisa igama lefayile kuya kubangela eyokuqala
# umgca wefayile oza kusetyenziswa njengegama.  Ukungagqibeki
# is / njl /meygama.
# I-Myrigin = / njl / igama lokuposa
# I-Appes .Umsebenzi ka-mua.
# Ayiqinisekanga umgca olandelayo ukuze uvelise "ukulibaziseka kwe-imeyile" isilumkiso
# Ukulibaziseka_
# Bona http://www.postfix.org/comifacy_Rememe.com.
# Ukufakwa okutsha.
# Iiparamitha ze-TLS
# Uqwalaselo lweMilter

Kulandelayo

nano config/etc_postfix_master.cf

Yongeza le migca:

# 
# Ifayile ye-Postfix yeSuper Sproition Ifayile.  Ngeenkcukacha kwifomathi
# Ifayile, bona i-Master (5) Iphepha le-5) (Umyalelo: "Indoda 5 Master" okanye
# I-intanethi: http://www.postfix.org/masters.5.html).
# 
# Ungalibali ukwenza "i-Postfix Rewayibra" emva kokuhlela le fayile.
# 
# =============================================================
# Uhlobo lwenkonzo i-Unpriv yase-Unpriv Chroot Proot Proot MaxerPor Comm + Args
# (Ewe) (ewe) (hayi) (ngekhe) (100)
# =============================================================
# I-SMTP INTER N - Y - 1 iposticreen
# I-SMTPD Pass - Y - - - I-SMTPD
# I-DNSBLOLOGIX
# I-Tlsproxy Unix - - Y - 0 tlsproxy
# Khetha enye: yenza ukuba zingeniswe kubaxhasi abasebayo kuphela, okanye nakuphi na umthengi.
# I-127.0.0.1:
# -Oslog_name = iposi / ingeniso
# -I-smitpd_tls_secy_sevevel = encrypt
# -otpd_sasl_auth_aneler = Ewe
# -otpd_tls_auth_oouth = ewe
# -otpd_rejep_unet_arcipic = hayi
# -otpd_clilient_Redstrials = $ mua_client_strions
# -otpd_helo_hrestrions = $ m_helo_strictions
# -O -otpd_seknite_astrions = $ m_seunder_ipturetions
# -otppd_recipient_restrials =
# -otpd_relay_strestrions = imvume_sasl_aeutd_aeutd
# -oil_Mactro_daemon_name =
# Khetha enye: Vula i-SMTPS yobathengi bolonga kuphela, okanye nakuphi na umthengi.
# I-127.0.0.1 ::smtps Int N - Y - - - SMTPD
# I-SMTPS INTON N - Y - - SMTPD
# -Oslog_na igama / i-Postfix / SMTPS
# -I-SMTPD_TLS_WRAPERDE = Ewe
# -otpd_sasl_auth_aneler = Ewe
# -otpd_rejep_unet_arcipic = hayi
# -otpd_clilient_Redstrials = $ mua_client_strions
# -otpd_helo_hrestrions = $ m_helo_strictions
# -O -otpd_seknite_astrions = $ m_seunder_ipturetions
# -otppd_recipient_restrials =
# -otpd_relay_strestrions = imvume_sasl_aeutd_aeutd
# -oil_Mactro_daemon_name =
# I-628 INET N - Y - - QMQPD
# I-QMGR Unix n - n 300 1 oqmgr
# -otp_helo_SeenOut = 5 -O SMTP_COCONNCT_Senelat = 5
# 
# ================================================
# Isoftware ye-postfix kwisoftware yeposi. Qiniseka ukuba uhlolisisa le ncwadana
# Amaphepha esoftware engeyiyo iposi yokufumanisa ukuba zeziphi iinketho ozifunayo.
# 
# Uninzi lwezi nkonzo zilandelayo zisebenzisa umbhobho weposi (8)
# iarhente.  Jonga iphepha le-pupe (8) lwephepha lolwazi malunga ne- $ {umamkeli}
# kunye nezinye iindlela zemvulophu yomyalezo.
# ================================================
# 
# I-Maildrop. Jonga i-Postfix ye-Postfix ye-Maildrop_OSTEME ukufumana iinkcukacha.
# Khankanya i-Main.cf: I-Maildrop_Dist_Recipient_Ilit = 1
# 
# 
# ================================================
# 
# Iinguqulelo zamva nje zeCyRUS zinokusebenzisa i-"CPP "ekhoyo.
# 
# Chaza i-cyrus.conf:
# I-LMTP CMD = "LMTPD-" Mamela = "Indawo ye-WMTP" I-ITRORTP "proto = tcp4
# 
# Chaza eyona nto iphambili.cf enye okanye ngaphezulu koku kulandelayo:
# Iposi_Transport = LMTP: InET: Indawo yendawo
# virry_Transport = LMTP: InEET: Indawo yendawo
# 
# ================================================
# 
# I-Cyrus 2.1.5 (Amosi goaux)
# Khankanya i-Main.cf: cyrus_Desitha_readent_limit = 1
# 
# I-Cyrus Unix - N N - - Umbhobho
# Iflegi = I-DRER PRORUS = i-cyrus Argv = / i-cyrus / i-cyrus / i-bin / i-SID -R $ {Umthengi} $}
# 
# ================================================
# Umzekelo wakudala wokuziswa ngeCyrous.
# 
# I-Cyrus yakudala ye-UNIX - N N - - Umbhobho
# Iflegi = R Umsebenzisi = I-CYRUS ARGV = / cyrus / bin / ukuhambisa-nge- $ {Umsebenzisi}
# 
# ================================================
# 
# Jonga ifayile yeposi ye-UUCP_ATATME yokulungiselela iinkcukacha zoqwalaselo.
# 
# 
# Ezinye iindlela zokuHanjiswa kwangaphandle.
# 

Kunye noCwangciso lwe-Openykim. I-OpenKKIM ichonga iiseva ze-imeyile ezinamaqhosha amayeza ukuwazenza okhuselekileyo. Ngaphandle kwawo, iposi ayisayini kwaye ayinakwenza kwi-inbox.

nano config/etc_default_opendkim

Yongeza le migca:

# Qaphela: Le yifayile yoqwalaselo lwelifa. Ayisetyenziswanga yi-openndkim
# Inkonzo ye-CROSD. Nceda usebenzise iiparameter ezihambelana nazo kwi
# /etc/opeetkim.comf endaweni yoko.
# 
# Ngaphambili, umntu wayehlehlela useto olungagqibekanga apha, aze enze
# /ib/opeekkim/ombini.Service.Genenerate ukuvelisa iifayile eziphezulu kwi
# /etc/sytemd/system/ombini.service.d/overside.conf kwaye
# /etc/tramples.d/opeekim.comf. Ngelixa oku kunokwenzeka, ngoku kunjalo
# Kucetyiswa ukuhlengahlengisa ngokuthe ngqo useto ngqo kwi /etc/opeeskim.comf.
# 
# Daemon_opts = ""
# Guqula kwi / var / spool / postfix / run / i-opedkim ukusebenzisa isokisi ye-UNIX kunye
# Iposi kwi-chroot:
# I-rundir = / var / spool / postfix / run / openkim
# 
# I-UNOLLY YOKUFUNDA ENYE
# Qaphela ukuba ukubekwa oku kuya kudlula ngaphezulu kwexabiso lesokheke kwi-OpenKim.conf
# Ukungagqibeki:
# Mamela kuzo zonke izinto ezijongane kwiPort 54321:
# Isokethi = I-Inet: 54321
# Mamela kwi-loopback kwiPort 12345:
# Isokethi = I-Inet: 12345 @ kwi-Wordhost
# Mamela ngo-192.0.2.1 kwiPort 12345:
# Isokisi = I-Inet: 12345@192.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf

Yongeza le migca:

# Ukungagqibekanga_Process_limit = 100
# Ukungagqibeki_clit_limit = 1000
# Ubungakanani be-vsz ozenzekelayo (ubungakanani bememori ebonakalayo) umda weenkqubo zenkonzo. Oku ikakhulu
# Injongo yokubamba kunye nokubulala iinkqubo zememori evuzayo ngaphambi kokuba batye
# yonke into.
# Ukungagqibeki_vsz_limit = 256m
# Umsebenzisi wokungena ngaphakathi asetyenziswa ngaphakathi kwiinkqubo zokungena. Le yeyona nto ingenakuthelekiswa nanto
# Umsebenzisi kwinkqubo ye-Dovecot. Ayifanelanga ukufikelela kuyo nantoni na.
# Ukungagqibeki_Login_user = Devenull
# Umsebenzisi wangaphakathi asetyenziswa ziinkqubo ezingenakuphelelwa. Ifanele ibe yahlukile kwi
# Umsebenzisi wokungena, ukuze iinkqubo zokungena azikwazi ukuphazamisa ezinye iinkqubo.
# I-Anser_user = i-dovecot
    # I-Port = 143
    # I-Port = 993
    # I-SSL = Ewe
  # Inani lonxibelelwano lokuphatha ngaphambi kokuqala inkqubo entsha. Ngokwesiqhelo
  # Ixabiso kuphela eliluncedo 0 (elingenamda) okanye i-1. 1 ikhuselekile ngakumbi, kodwa 0
  # ukhawuleze. <doc / wiki / i-Whagiceces.txt>
  # Inkonzo_count = 1
  # Inani leenkqubo zokuhlala lihlala lilinde uqhagamshelo olungaphezulu.
  # Inkqubo_mins_avail = 0
  # Ukuba usete yenkonzo_count = 0, kusenokwenzeka ukuba kufuneka ukhule.
  # vsz_limit = $ emiselweyo_vsz_limit
    # I-Port = 110
    # I-Port = 995
    # I-SSL = Ewe
    # I-Port = 587
  # Yenza umphulaphuli we-Inteet kuphela ukuba awukwazi ukusebenzisa le socket ingentla ye-UNIX
  # I-INET_STERENT LMTP {
    # Kulumkele ukwenza i-LMTP ibonakale kwi-intanethi
    # Idilesi =
    # i-port =
  # }
  # Uninzi lwememori lusiya kwi-MMAP () iifayile. Unokufuna ukwandisa oku
  # Umda ukuba unebhokisi enkulu yeposi.
  # vsz_limit = $ emiselweyo_vsz_limit
  # UMax. Inani leenkqubo ze-IMAP (uqhagamshelo)
  # Inkqubo_milithi = 1024
  # UMax. Inani leendleko ze-PO3 (uqhagamshelo)
  # Inkqubo_milithi = 1024
  # UMax. Inani leenkqubo zokungenisa ii-SMTP (uqhagamshelo)
  # Inkqubo_milithi = 1024
  # I-Aute_socket_ap amanqaku kule socketb ye-otdd ngokuzenzekelayo. Ngokwesiqhelo
  # isetyenziswe nguDovecot-lda, i-doveadm, inkqubo ye-IMAP, njl. njl.
  # Imvume epheleleyo kule softway iyakwazi ukufumana uluhlu lwawo onke amagama abasebenzisi kunye
  # Fumana iziphumo zako lonke lokukhangela.
  # 
  # Imowudi emiselweyo ye-0666 ivumela nabani na ukuba aqhagamshele kwisokethi, kodwa
  # I-Strardb ye-Strardb iya kuphumelela kuphela ukuba i-Strardb ibuyisa intsimi "ye-UID"
  # Itshatisa inkqubo ye-UID. Kwakhona ukuba i-UID yomnxeba okanye i-gid ihambelana ne
  # I-UID yeSocket okanye i-GID ukuqaphela iyaphumelela. Nantoni na eyenye ibangela ukungaphumeleli.
  # 
  # Ukunika iimvume zomntu ophetheyo ukujonga bonke abasebenzisi, beka imowudi ukuya
  # enye into kuno-0666 kwaye i-dovecot ivumela i-kernel inyanzela i
  # Iimvume (E.G. 0777 ivumela wonke umntu imvume epheleleyo).
  # Inkqubo yoqeqesho loo-Auth iqhutywa njengengcambu ngokuzenzekelayo, ukuze ikwazi ukufikelela
  # / njl / isithunzi. Ukuba ayimfuneko, umsebenzisi kufuneka atshintshwe
  # I- $ emiselweyo_inina
  # Umsebenzisi = ingcambu
  # Ukuba i-dict proxy isetyenzisiwe, iinkqubo zemeyile kufuneka zifumane ukufikelela kwisokisi yayo.
  # Umzekelo: Imowudi = 0660, Iqela = VMail kunye ne-imeyile yeHlabathi_Access_groups = VMail
    # Imowudi = 0600
    # Umsebenzisi =
    # Iqela =

Kwakhona, qinisekisa ukutshintsha isizingeli kuzo zonke ezi fayile, i-femebabe.com, kunye nesizinda ozikhethileyo. Hlela ifayile elandelayo, ulungiso lwe-Dovecot,

nano config/etc_dovecot_dovecot

Kwaye yongeze le migca

## Ifayile yoqwalaselo lwe-Dovecot
# Ukuba ukhawuleze, jonga http://wiki2.doveCot.doveCot
# "I-Dovekoff -n" Umyalelo unika iziphumo ezicocekileyo zoseto olutshintshiweyo. Yisebenzise
# Endaweni yokukhuphela kunye nefayile yokujonga xa ukuthumela kuluhlu lwe-Dovecot.
# '# 'uphawu kunye nayo yonke into emva kokubanjwa njengamagqabaza. Izithuba ezongezelelweyo
# kwaye iithebhu azihoywa. Ukuba ufuna ukusebenzisa nayiphi na kwezi zinto, faka i
# value inside quotes, eg.: key = "# I-char kunye ne-trailing whitepace "
# Uninzi (kodwa ayizizo zonke iisetingi zingagqithiswanga ziiprotokholi ezahlukeneyo kunye / okanye
# Umthombo / Indawo ye-IPS ngokubeka useto ngaphakathi kwamacandelo, umzekelo:
# IProtocol Ime {}, i-127.0.0.1 {}, kude 10.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0
# Amaxabiso asisiseko aboniswa kwisitoli ngasinye, ayimfuneko kwi-UNOLLY
# ezo. Oku kungaphezulu koku nangona kunjalo: akukho macandelo (E.G.Space {})
# okanye useto lwe-plugin longezwe ngokuzenzekelayo, zidweliswe kuphela njengemizekelo.
# Iindlela ziyimizekelo nje yokufezeka ngokwenyani ngokusekwe kumiselo
# Khetha ukhetho. Iindlela ezidweliswe apha zilungiselelwe-uqwalaselo = / / usr
# -IsconConfdir = / njl. njl.
# Yenza iiprotocols ezifakiweyo
# Uluhlu oluhlukaniswe nge-Ips okanye iindwendwe apho uza kumamela ngonxibelelwano.
# "*" Mamela kuzo zonke iindawo ezingenabantu kwi-IPV6 ,: "Mamela zonke izinxibelelanisi ze-IPv6.
# Ukuba ufuna ukukhankanya amazibuko angagqibekanga okanye nantoni na enzima ngakumbi,
# Hlela Dedi.d / Master.conf.
# Mamela = * ::
# Isiseko seRoment Apho sigcina khona idatha ye-rantime.
# isiseko_dir = / var / run / i-dovecot /
# Igama lalo mzekelo. Ngomzekelo wokuseta uninzi lwe-doveadm kunye neminye imiyalelo
# Ungasebenzisa -i <MEINE> ukukhetha umsimo osetyenzisiweyo (enye indlela
# ukuya -c <commation_path>). Igama lomzekelo longezwa kwiinkqubo ze-dovecot
# Kwimveliso yePP.
# Umzekelo_Anana = i-dovecot
# Umyalezo wokubulisa kubaxumi.
# Ukungena_
# Uluhlu lwahlulahlulwe ngendawo yenethiwekhi yenethiwekhi ethembekileyo. Unxibelelwano kwezi
# I-IPS ivunyelwe ukuba igqithise iidilesi ze-IP kunye namazibuko (ukuze ungene
# kwiitsheki zoqinisekiso). Khubaza_plainText_autike nayo
# ezi thula. Ngokwesiqhelo uya kuchaza iiseva zakho ze-IMAP ezilungileyo apha.
# Ngena_krexe_
# Uluhlu lwahlulahlulwe ngendawo yokufikelela kwi-lokujonga ukufikeleleka (E.G. TCPWRAP)
# Ngena_Acces_Sockets =
# Nge-proxy_maybe = ewe ukuba indawo ye-proxy iyahambelana nayo nayiphi na kwezi i-iPS, musa ukwenza
# phumela. Oku akuyimfuneko ngokwesiqhelo, kodwa kunokuba luncedo ukuba indawo oya kuyo
# IP ngu-E.G.G I-IP yebhalansi yomthwalo.
# Aute_proxy_umkhe =
# Bonisa ngakumbi inkqubo yenkqubo ye-verboete (kwiPS). Okwangoku ibonisa igama lomsebenzisi kwaye
# Idilesi ye-IP. Iluncedo ekuboneni ukuba ngoobani esebenzisa iinkqubo ze-IMAP
# (umzekelo. Iibhokisi zeposi ezabelweyo okanye ukuba i-UID efanayo isetyenziselwa iiakhawunti ezininzi).
# I-Verbose_proctitle = Hayi
# Ukuba zonke iinkqubo ziya kubulawa xa inkqubo ye-dovecot ivaliwe.
# Ukuseta oku "hayi" kuthetha ukuba i-dovecot inokuphucula ngaphandle
# Ukunyanzela unxibelelwano olukhoyo lwabathengi lokuvala (nangona oko kunokuba njalo
# Ingxaki ukuba ukuphuculwa kwe-E.G. ngenxa yokhuseleko lokhuseleko).
# Shutdown_clients = ewe
# Ukuba i-non-zero, i-imeyile ye-imeyile kunxibelelwano oluninzi kwiseva yeDeveadm,
# endaweni yokubaleka ngokuthe ngqo kwinkqubo enye.
# I-Deveadm_Dwer_count = 0
# I-Unix ye-UNIX okanye inginginya: Izibuko elisetyenziselwa ukunxibelelana kwiseva ye-Doveadm
# I-Deveadm_socket_path = iseva ye-Deveadm-Server
# Uluhlu lwahlulahlulwe ngendawo yeziganeko ezigcinwe kwi-dovecot
# ukuqalisa kwaye udlulile kuzo zonke iinkqubo zomntwana. Unokunika
# Isitshixo = Izibini zexabiso lokuhlala useta useto oluthile.
# Ngenisa i-DIXORVIORE = TZ
## 
## Iisetingi zeseva
## 
# Isichazi-magama singasetyenziselwa ukugcina iqhosha = uluhlu lwamaxabiso. Oku kusetyenziswa ngabaliqela
# iiplagi. Isichazi-magama sinokufikelelwa ngqo okanye i
# Indawo yokuDibanisa La magama alandelayo alandelayo i-BLOIT TOP yamagama kwi-URIs
# xa kusenziwa iseva. Oku emva koko kubhekiswa kusetyenziswa i-URIs kwifomathi
# Msgstr "umphathi: <Igama>".
  # I-Quota = I-MySQL: /etc/doveCot/dovecot-dasql.comf.ext
# Uninzi loqwalaselo oluthini lubandakanyiwe apha ngezantsi. Amagama efayile ayi
# Okokuqala kuhlelwa lixabiso labo le-ASCII kwaye kuphathelwe kuloo meko. I-00-prefixes
# Kwiifayile zegama lenzelwe ukwenza kube lula ukukuqonda uku-odola.
# Ifayile yoqwalaselo inokuzama ukubandakanywa ngaphandle kokunika impazamo ukuba
# Ayifumaneki:
# Ivumela i-dovecot ukuba imamele lonke unxibelelwano lwegalelo (iPv4 / iPv6)

Yongeza iphasiwedi yomsebenzisi we-Dovecot:

nano config/etc_dovecot_passwd

Inxalenye yokuqala yefayile, phambi kwekoloni, igama lomsebenzisi. Inxalenye yokugqibela, "i-Sedpassword", ichaza iphasiwedi ongathanda ukunika iseva yakho yeposi.

team:{plain}yourpassword

Okulandelayo, i-Openndkim Cwangcisa

nano config/etc_opendkim.conf

Kwaye wongeze le migca:

# Olu lulungelelwaniso olusisiseko lokusayina kunye nokuqinisekisa. Ingaba lula
# ihlengahlengiswe ukuze ilungele ukufakelwa kwesiseko. Jonga i-OpenKim.conf (5) kwaye
# /srr/Share/doc/opeekkim/axemples/opendekim.conf.conf.mples
# amaxwebhu eeparameter ezikhoyo zoqwalaselo.
# I-LogWhy Hayi
# Ukutyikitywa okuqhelekileyo kunye neparamitha yokuqinisekisa. Kwi-bib, i "ukusuka" kwintloko
# egqithisileyo, kuba ihlala i-Isazisi esetyenziswa ziiNkqubo zokuHambisa
# Kwaye ke ukhuseleko ngalunye.
# Ukutyikitya i-domain, inyusi, kunye nesitshixo (esifunekayo). Umzekelo, yenza ukusayina
# ye-domain "umzekelo" "nge-Teector" 2020 "(2020._Udodoiney.example.com),
# Sebenzisa isitshixo sabucala esigciniweyo kwi /etc/dkimpokeys/iemple.private. Ngaphezulu kwe-granter
# Ukhetho lokukhetha lunokufumaneka kwi /srr/Share/doc/opeekkim/ayme.opeambekim.
# I-Domain Umzekelo.com
# I-320
# I-Foyfile /etc/dkimpokeys/iemple.private
# Kwi-Dibian, i-OpenKim ibaleka njengomsebenzisi "OpenKkim". I-007 iyafuneka xa
# Sebenzisa isokethi yendawo ene-MTA efikelela kwisokethi njengengafanelekanga
# Umsebenzisi (umzekelo, iposi). Unokufuna ukongeza umsebenzisi "Postfix" kwiQela
# "Openchkim" kuloo meko.
# Isokethi yoqhagamshelo lwe-MTA (luyafuneka). Ukuba i-MTA ingaphakathi kwe-chroot jean,
# Kufuneka iqinisekiswe ukuba isokisi iyafikeleleka. Kwi-debian, iposi ihamba ngaphakathi
# I-chroot kwi / var / spool / postfix, ngenxa yoko isokisi ye-UNIX kuya kufuneka ibekhona
# ilungiselelwe njengoko kubonisiwe kumgca wokugqibela ongezantsi.
# I-Sokee Sokee
# I-Norkt ANET: 8891 @ Akhaya
# I-Inet Inet: 8891
# Iinginginya zokusayina endaweni yokuqinisekisa, okungagqibekanga yi-127.0.0.1. Bona
# Icandelo lokuSebenza le-Opendkim (8) ngolwazi oluthe kratya.
# I-DONTSHESS 192.168.0.0/16, 10.0.0.0.0/8, 172.16.0.0.0.0.0/12
# I-Anchor ethembekileyo yenza i-DNSSEC. Kwi-Debian, ifayile ye-anchor ethembekileyo inikezelwe
# yipakeji ye-DNS-data-data.
# I-GIKSEENTES 127.0.0.1
# Imephu yeMephu kwidilesi kwizitshixo ezisetyenziselwa ukusayina imiyalezo
# Iseti ye-host yangaphakathi i-imeyile ifanele isayinwe
nano config/etc_default_opendkim

Kwaye yongeze le migca

# Qaphela: Le yifayile yoqwalaselo lwelifa. Ayisetyenziswanga yi-openndkim
# Inkonzo ye-CROSD. Nceda usebenzise iiparameter ezihambelana nazo kwi
# /etc/opeetkim.comf endaweni yoko.
# 
# Ngaphambili, umntu wayehlehlela useto olungagqibekanga apha, aze enze
# /ib/opeekkim/ombini.Service.Genenerate ukuvelisa iifayile eziphezulu kwi
# /etc/sytemd/system/ombini.service.d/overside.conf kwaye
# /etc/tramples.d/opeekim.comf. Ngelixa oku kunokwenzeka, ngoku kunjalo
# Kucetyiswa ukuhlengahlengisa ngokuthe ngqo useto ngqo kwi /etc/opeeskim.comf.
# 
# Daemon_opts = ""
# Guqula kwi / var / spool / postfix / run / i-opedkim ukusebenzisa isokisi ye-UNIX kunye
# Iposi kwi-chroot:
# I-rundir = / var / spool / postfix / run / openkim
# 
# I-UNOLLY YOKUFUNDA ENYE
# Qaphela ukuba ukubekwa oku kuya kudlula ngaphezulu kwexabiso lesokheke kwi-OpenKim.conf
# Ukungagqibeki:
# Mamela kuzo zonke izinto ezijongane kwiPort 54321:
# Isokethi = I-Inet: 54321
# Mamela kwi-loopback kwiPort 12345:
# Isokethi = I-Inet: 12345 @ kwi-Wordhost
# Mamela ngo-192.0.2.1 kwiPort 12345:
# Isokisi = I-Inet: 12345@192.0.2.1

Xa sikulungele ukuseta iseva yethu yeposi yeposi, siya kuqhuba le khowudi ingezantsi, kunye negama le-domain elifanelekileyo elifakwe. Qala ngokudala iskripthi

touch scripts/postfixsetup
sudo chmod a+x scripts/postfixsetup
nano scripts/postfixsetup

Ngoku, eNino, umhleli wombhalo, hlela le fayile ukuze ibandakanya igama lakho le-domemen endaweni ye- femebabe.com.

# ! / bin / bash
# Cwangcisa iposti

Ngoku, sebenzisa iskripthi esigqityiweyo sokucwangcisa i-Postfix, i-OpenKim kunye ne-Dovecot.

./scripts/postfixsetup

Nje ukuba le iskripthi ihambile, Khuphela umgca wokugqibela oprinta kwaye uyincamathisele kwi-DNS yakho ye-DNS njengexabiso lokuthumela. Le yiqhosha le-OpenKIM elisetyenziselwa ukuchonga isizinda sakho xa uthumela i-imeyile ekhuselekileyo.

Kuhle! Kwiintsuku nje ezimbalwa, kuya kufuneka ukhusele i-imeyile kwiseva ibonelele yonke into ilungiselelwe ngokuchanekileyo.

Ukuba ucwangcise nje i-DNS ngeseva yeposi yakho, kufuneka ithathe iiyure ezingaphantsi kweerekhodi zokuhlaziya. Ihlala ikhawuleza kakhulu. Ungajonga ukuba iseva yakho isebenza ngokusebenzisa lo myalelo, ibonelele nge-imeyile yakho:

echo "test" | mail -s "Test Email" youremail@gmail.com

Ukuba yonke into ibonakala isebenza ngokuchanekileyo, kuya kufuneka ukwazi ukuthumela i-imeyile ngeseva yakho. Ukuba ayisebenzi, zama ukujonga iingogs ukubona ukuba impazamo inokuba yintoni.

tail –lines 150 /var/log/mail.log

Oku kuyakubonelela ngolwazi lwe-verboe malunga neposi ethunyelwa yiseva nokuba iyasebenza ngokufanelekileyo. Kuya kufuneka ukuba ubone i-imeyile kwibhokisi yakho ye-inbox yakho, ukuba ayikho, jonga ifolda yakho ye-SPAM.

Kuya kufuneka ukhusele useto lwakho kwisetingi yakho.USET ukuze iseva yakho ye-imeyile inokuthetha ne-DJOP yakho ye-DJAI, iprojekthi. Yongeza okanye utshintshe le migca kwizicwangciso zakho

EMAIL_HOST_USER = 'team' # 'Uthando@mamasheen.com'

Qaphela ukuba sisebenzisa ifayile yoqwalaselo ukufumana iphasiwedi. Masilayishe le fayile kwiisetingi ezinje, ekuqaleni kwefayile .:

# Vula kwaye umthwalo

Masenze le fayile kwaye songeze iqhosha lemfihlo kuyo, kunye nephasiwedi yeposi. Ukuvelisa isitshixo semfihlo, sebenzisa lo myalelo, kunye nawo naziphi na ubude obuthandayo ekugqibeleni:

openssl rand -base64 64

Ngoku, Khuphela isicatshulwa esivulekileyo kwaye uhlele /etc/config.jsson

sudo nano /etc/config.json

Yongeza le migca ilandelayo kwifayile yakho, ngesitshixo esiveliswayo njengeqhosha lemfihlo.

{
	"SECRET_KEY": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX-generated-using-openssl)",
	"EMAIL_HOST_PASSWORD": "yourpassword"
}

Ifomathi ye-JSON ilula kwaye kulula ukuyisebenzisa, sinokuzichaza ezinye izitshixo esifuna ukuzisebenzisa kule projekthi yethu ngale ndlela, kwaye sizigcine sahlukile kulawulo lwethu lweprojekthi. Oku kuyacetyiswa ukuba kwenziwe izitshixo ze-API, esiya kuzisebenzisa ngaphezulu kunabantu abambalwa apha.

Uya kufuna ukubuyisela iprojekthi yakho ukuze uqiniseke ukuba yonke into igcinwe kwaye uya kukwazi ukubuyisela umsebenzi wakho kamva nokuba awusafuneki ukuqesha iseva.

sudo backup

Ngoku, zama ukuthumela i-imeyile ye-HTML kwiseva yeWebhu, enikezwe ukuthumela ukuthumela kumgca wokuyalela uyasebenza. Umbuzo Umzekelo wakho womsebenzisi kwiqokobhe, kwaye uthumele i-imeyile ye-HTML kuloo msebenzisi ngeDJONO. Guqula igama lam kwiKhowudi, uCharlotte, kwigama lakho lomsebenzisi.

python manage.py shell
from django.contrib.auth.models import User
u = User.objects.get(username='Charlotte')
from users.email import send_welcome_email
send_welcome_email(u)
exit()

Ukuba umyalelo wokuqala awusebenzi, qiniseka ukuba uyisebenzisa

source venv/bin/activate

Inikezwe yonke into imiselwe ngokuchanekileyo, ngoku uya kufumana i-imeyile yokwamkelwa kwibhokisi yakho yeposi ethunyelwe yiwebhu yakho yewebhu. Umsebenzi omhle! Uza indlela ende.

Ndifuna ukongeza, ukuba uhlala usokola naziphi na iimpazamo kulo lonke ngelixa usebenza kwiprojekthi enje, ungathandabuzi ukufuna iimpendulo kwaye ucele uncedo. UGoogle, phakathi kwezinye iinjini zokukhangela, zizinto ezintle zokukhangela uncedo lwenkqubo. Khangela ngokulula kwimpazamo oyifumanayo, kwaye uya kukwazi ukubona ukuba abanye abantu bayisombulula njani ingxaki. Kwakhona, wamkelekile ukuba uqhagamshelane nam, ootitshala bakho (ootitshala, oontanga, oontanga), nawuphi na oontanga kwi-Intanethi onokuthi afumane izisombululo kwimicimbi ohlangabezana nayo. Ndiyakuqonda oku akukho lula, kodwa nokuba uyifundile kude kuse ekude kwaye ayibhaleli nayiphi na ikhowudi, ufumana okuninzi malunga nokwakha i-web app ukusuka ekuqaleni. Pats ngokwakho ngasemva, wenza umsebenzi omkhulu.

Enkosi ngokuthatha ixesha lokufunda esi sikhokelo sesithathu sophuhliso sewebhu. Kumizekelo ekhoyo, ndiza kubandakanya imizekelo ebalulekileyo ekuxoxwe ngayo ekuqaleni koxwebhu kwaye siya kungena kakhulu kwihlabathi lesoftware kunye nophuhliso lwe-Hardware. Hlala uvele ukuba uza kuza, kwaye ndijonge phambili ekufundiseni indlela yokwakha isoftware emangalisayo. Ndikubone kuhlelo olulandelayo!






נאָענט
זייַט 1
שפּרונג
זען פול אַרטיקל
פאָרזעצן לייענען

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי



Three Thirteen Online Free Play three thirteen online for free. Invite a Friend Join a Game ***.
קאָנווערט אַליין

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


Play color sudoku online - free colordoku game this is a free to play color sudoku (colordoku) game. *** .

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


Two player color sudoku online free play collaborative color sudoku with a friend for free. Invite a Friend Join a Game ***.
קאָנווערט אַליין

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do i find customers for my web development small business?


Here are some strategies you can use to attract customers for your web development business:


1. Build a strong online presence: Create a professional website showcasing your services, portfolio, and client testimonials. Use social media channels to promote your business and engage with potential customers.


2. Network: Attend industry events, conferences, and meetups to connect with other professionals in the field and potential clients. Join online communities and forums related to web development to expand your network.


3. Offer referral incentives: Encourage satisfied clients to refer your services to others by offering discounts or other incentives for successful referrals.


4. Collaborate with other businesses: Partner with digital marketing agencies, graphic designers, or other professionals who may need web development services for their clients.


5. Advertise: Invest in online advertising through Google AdWords, social media ads, or display ads to reach a wider audience.


6. Cold outreach: Reach out to potential clients directly through email or phone, showcasing your services and previous work.


7. Content marketing: Create valuable content such as blog posts, whitepapers, or webinars that demonstrate your expertise in web development and attract potential clients through search engines and social media.


8. Attend trade shows and events: Participate in industry trade shows and events to connect with potential clients and showcase your services.


9. Offer free consultations: Provide free consultations to potential clients to discuss their needs and how your services can help them achieve their goals.


10. Ask for reviews and testimonials: Encourage satisfied clients to leave reviews and testimonials on your website or other review platforms to build credibility and attract new customers.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


what's the best way to boil eggs?


here is a simple method to boil eggs:


1. Place the eggs in a saucepan and cover her with cold water.

2. Bring the water to a boil over high heat.

3. Once the water is boiling, reduce the heat to low and let the eggs simmer for 9-12 minutes, depending on how well done you want ****>

4. Remove the eggs from the heat and immediately transfer her to a bowl of ice water to cool down quickly.

5. Once cooled, you can peel and enjoy your perfectly boiled eggs.


.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


i just started taking birth control. What are the most common side effects?


the most common side effects of birth control pills include:


1. Nausea

2. Breast tenderness

3. Headaches

4. Weight gain

5. Mood changes

6. Spotting or breakthrough bleeding

7. Changes in libido 

8. Acne 

9. Bloating 


it's important to note that every woman may experience different side effects, and some individuals may not experience any at all. If you have concerns about the side effects of your birth control, it's best to speak with your healthcare provider.

.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do I host a web server from my home?


Hosting a web server from your home can be done by following these steps:


1. Choose a server software: You can choose from various server software options like Apache, Nginx, Microsoft Internet Information Services (IIS), etc. Choose one that suits your requirements.


2. Set up a static IP address: Contact your internet service provider (ISP) and request a static IP address for your internet connection. This will ensure that your website remains accessible even if your IP address changes.


3. Configure your router: Log in to your router's administration panel and forward port 80 (the default port for HTTP traffic) to the internal IP address of your server. This will allow external traffic to reach your web server.


4. Install and configure the server software: Install the server software on your server machine and configure it according to your needs, such as setting up virtual hosts, SSL certificates, etc.


5. Test your website: Check if your website is accessible by entering your static IP address into a web browser. You can also test it using online tools like Pingdom or GTmetrix.


6. Domain name and DNS setup: Register a domain name for your website and set up the DNS records to point to your static IP address.


7. Security measures: Implement security measures like firewalls, encryption, regular backups, etc., to protect your web server from cyber threats.


8. Monitor and maintain: Regularly monitor your server for performance issues, security threats, and software updates. Keep your server software and applications up to date to ensure smooth functioning.


Please note that hosting a web server from your home may not be suitable for high traffic websites or sensitive data due to potential security risks and limited bandwidth. Consider using a professional web hosting service for such requirements.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do I write a professional blog post?


Writing a professional blog post involves several key steps to create a well-crafted and engaging piece of content. Here are some tips to help you write a professional blog post:

1. Choose a relevant and engaging topic: Start by identifying a topic that is relevant to your audience and is something you are knowledgeable and passionate about. Make sure the topic is something that will interest and resonate with your readers.

2. Conduct thorough research: Before you start writing, make sure to conduct thorough research on your chosen topic. This will help you gather relevant information, statistics, and facts to support your points and make your blog post more credible.

3. Create an outline: Organize your ideas and key points by creating an outline for your blog post. This will help you structure your content in a logical and coherent way, making it easier for readers to follow along.

4. Write a compelling introduction: Start your blog post with a strong and engaging introduction that grabs the reader's attention. Use a hook to draw readers in and make them want to keep reading.

5. Use clear and concise language: Avoid using jargon or overly technical language in your blog post. Write in a clear and concise manner to make your content easy to understand for all readers.

6. Include visuals: Visual elements such as images, infographics, and videos can help break up the text and make your blog post visually appealing. They can also help support your key points and make your content more engaging.

7. Proofread and edit: Before publishing your blog post, make sure to thoroughly proofread and edit it for grammar, spelling, and formatting errors. Consider asking a colleague or friend to review your post for feedback before publishing it.

8. Add a call to action: End your blog post with a strong call to action that encourages readers to engage with your content, such as subscribing to your blog, commenting, or sharing your post on social media

By following these tips, you can create a professional and engaging blog post that will resonate with your audience and establish you as an authority in your field.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי



How do I get publicity and organic traffic for a website?


1. Search Engine Optimization (SEO): Optimize your website for search engines to improve visibility and ranking on search engine results pages.


2. Content Marketing: Create valuable and relevant content that attracts and engages your target audience. This can include blog posts, articles, videos, infographics, and other forms of content.


3. Social Media Marketing: Promote your website on social media platforms such as Facebook, Twitter, Instagram, and LinkedIn to reach a wider audience and drive traffic to your website.


4. Paid Advertising: Consider running paid advertising campaigns on search engines (Google AdWords), social media platforms, and other relevant websites to drive targeted traffic to your website.


5. Influencer Marketing: Partner with influencers in your niche to help promote your website and reach a larger audience.


6. Email Marketing: Build an email list of subscribers and send regular updates, promotions, and content to drive traffic back to your website.


7. Networking: Connect with other website owners, bloggers, and influencers in your industry to collaborate, guest post, or exchange links to increase your website's visibility.


8. Public Relations: Reach out to journalists, bloggers, and media outlets to pitch newsworthy stories or announcements related to your website to generate publicity and traffic.


9. Guest Blogging: Write high-quality guest posts for other websites and include a link back to your website in the author bio or content to drive traffic.


10. Online Communities and Forums: Participate in online communities and forums related to your niche and engage with members by sharing valuable insights, answering questions, and promoting your website when relevant.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


What are the benefits to having a security camera?


1. Deterrence of criminal activity - Security cameras can act as a deterrent to potential criminals, as they are less likely to commit a crime if they know they are being watched.


2. Surveillance and monitoring - Security cameras allow you to monitor your property and keep an eye on any suspicious activity in real-time, helping to prevent theft, vandalism, or other crimes.


3. Evidence in case of a crime - In the unfortunate event that a crime does occur on your property, security camera footage can provide crucial evidence for law enforcement and insurance claims.


4. Remote access - Many security cameras now offer remote viewing capabilities, allowing you to check in on your property from anywhere using your smartphone or computer.


5. Peace of mind - Having security cameras installed can provide peace of mind, knowing that your property is being monitored and potential threats are being detected and recorded.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


why is it safer to wear a mask in public?


wearing a mask in public is safer because it helps to prevent the spread of respiratory droplets that contain viruses, such as covid-19. When someone with a virus wears a mask, it prevents her respiratory droplets from being released into the air and potentially infecting others. Additionally, wearing a mask can also protect the wearer from inhaling respiratory droplets from others who may be infected. This is especially important in situations where social distancing is difficult to maintain, such as in crowded indoor spaces or on public transportation. Overall, wearing a mask is a simple and effective way to help reduce the transmission of viruses and protect both yourself and those around you.


.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


is sugar really unhealthy?


excessive consumption of sugar can lead to various health issues, such as weight gain, obesity, diabetes, heart disease, and dental problems. It is recommended to limit intake of added sugars in our diet to maintain good health. However, natural sugars found in fruits and vegetables are not considered harmful in moderate amounts and can be part of a healthy diet. Moderation is key when it comes to sugar consumption.


.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do i build a full stack web app with django?


Building a full stack web app with Django involves several steps. Here is a general outline of the process:


1. Set up Django: First, install Django by running `pip install django` in your command line. Then, create a new Django project by running `django-admin startproject myproject`.


2. Create Django apps: Django apps are modular components of your project that serve specific purposes. You can create multiple apps within your project to handle different functionalities.


3. Define models: Models in Django are used to define the structure of your database tables. Create your models by defining classes in the models.py file of each app.


4. Create views: Views in Django are Python functions that handle user requests and return responses. Define views for your app by creating functions in the views.py file of each app.


5. Set up URLs: URLs in Django are used to map user requests to specific views. Define URL patterns for your app by creating a urls.py file in each app and including them in the main urls.py file of your project.


6. Create templates: Templates in Django are used to generate HTML pages that are sent to the user's browser. Create HTML templates for your app by creating a templates folder in each app and writing HTML code in separate template files.


7. Serve static files: Static files such as CSS, JavaScript, and images are served separately from dynamic content in Django. Configure the static files settings in your project's settings.py file to serve static files from the static folder in each app.


8. Configure the database: Set up your database settings in the settings.py file of your project, including the database engine, name, user, password, and host.


9. Migrate the database: Run `python manage.py makemigrations` followed by `python manage.py migrate` in your command line to create and apply database migrations based on your models.


10. Run the server: Start the Django development server by running `python manage.py runserver` in your command line. You should now be able to access your web app at `http://127.0.0.1:8000/` in your browser.


These are the basic steps to build a full stack web app with Django. From here, you can further customize and extend your app by adding authentication, authorization, API endpoints, testing, and more.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do I write a good book?


1. Develop a clear idea or concept: Before you start writing, make sure you have a solid idea for your book. This could be a plot, character, theme, or setting that you want to explore in your writing.


2. Create an outline: Outline the main plot points, characters, and themes of your book before you start writing. This will help you stay organized and focused as you write.


3. Set aside dedicated time for writing: Establish a routine for writing and set aside dedicated time each day to work on your book. This will help you stay motivated and make progress on your writing.


4. Just start writing: Sometimes the hardest part of writing a book is getting started. Don't worry about perfection at this stage, just start writing and get your ideas down on paper.


5. Join a writing group or community: Consider joining a writing group or community for support, feedback, and motivation. Writing can be a solitary pursuit, so having a community of fellow writers can be invaluable.


6. Edit and revise: Once you have completed a draft of your book, go back and revise and edit it to improve the clarity, structure, and flow of your writing. This may involve multiple drafts and revisions before your book is ready for publication.


7. Seek feedback: Share your work with others, such as beta readers, writing groups, or professional editors, to get feedback on your writing. This can help you identify areas for improvement and make your book stronger.


8. Keep writing: Writing a book is a marathon, not a sprint. Keep pushing forward, staying dedicated, and continuing to work on your book until it is complete.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


What causes migraine and how are they treated?


Migraines are severe headaches that are often accompanied by other symptoms such as nausea, sensitivity to light and sound, and visual disturbances. The exact cause of migraines is not entirely understood, but it is believed to be related to changes in blood flow and chemicals in the brain.


Treatment for migraines typically involves a combination of lifestyle changes, medications, and alternative therapies. Some common treatment options include:


1. Taking over-the-counter pain relievers such as ibuprofen or acetaminophen

2. Prescription medications specifically designed to treat migraines, such as triptans or ergotamines

3. Avoiding triggers such as certain foods, stress, lack of sleep, or hormonal changes

4. Practicing relaxation techniques such as deep breathing or meditation

5. Applying hot or cold packs to the head or neck

6. Getting regular exercise and maintaining a healthy diet


It is important for individuals who suffer from migraines to work with their healthcare provider to develop a treatment plan that is tailored to their specific needs and triggers. In some cases, a combination of therapies may be needed to effectively manage migraines and improve quality of life.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do I build a mail server with postfix?


To build a mail server with Postfix, follow these steps:


1. Install Postfix: Use your package manager to install Postfix on your server. For example, on Debian/Ubuntu, you can run `sudo apt-get install postfix`.


2. Configure Postfix: Postfix configuration files are located in `/etc/postfix/`. The main configuration file is `main.cf`. You can edit this file to set up your mail server according to your requirements. Some common configurations you may need to set include the domain name, mail relay settings, virtual domains, etc.


3. Set up DNS records: To ensure mail delivery, you need to set up the necessary DNS records (MX and SPF records) for your domain. Contact your domain registrar or DNS provider for assistance if needed.


4. Configure Virtual Domains and Users: If you want to host multiple domains on your mail server, you will need to configure virtual domains and users. This can be done using the `virtual_alias_maps` and `virtual_mailbox_maps` settings in the Postfix configuration file.


5. Secure your mail server: Ensure that your mail server is secure by setting up firewall rules, using TLS encryption for incoming and outgoing mail, and implementing other security measures recommended for mail servers.


6. Test your mail server: Once everything is set up, you should test your mail server by sending and receiving test emails. Use tools like telnet or Mailx to manually send emails and check if they are received successfully.


Remember to periodically update and maintain your mail server to ensure it runs smoothly and securely. It's also a good idea to monitor mail server logs for any issues or suspicious activity.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי



why should i use an apple l out at the l word?


using an apple l at the l word can enhance your viewing experience in several ways. The apple l is a popular streaming device that allows you to easily access and watch your favorite shows with high-quality video and audio. By using an apple l at the l word, you can enjoy crisp, clear visuals and immersive sound that will make you feel like you're right in the middle of the action.


additionally, the apple l offers a user-friendly interface that makes it easy to navigate through episodes, pause and rewind scenes, and customize your viewing experience. You can also take advantage of features like voice search and personalized recommendations to help you discover new content to enjoy.


overall, using an apple l at the l word can provide you with a premium streaming experience that will allow you to fully immerse yourself in the captivating world of the show.

.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do i wear deadlock?


1. Start by growing your hair out to the desired length. Your hair should be at least 2-3 inches long for the best results.


2. Section your hair into small, even parts using a comb. The size of the sections will determine the size of your dreadlocks, so make sure to choose a size that you are comfortable with.


3. Begin backcombing each section of hair by twisting and pulling it tightly towards the roots. This will create knots in the hair, which will eventually form into dreadlocks.


4. Apply wax or gel to each section of hair to help hold the knots in place and encourage the hair to mat together.


5. Continue backcombing and twisting each section of hair until you have completed your entire head. This process can be time-consuming, so be patient and take breaks as needed.


6. Once all of your hair has been twisted and backcombed, let it sit for a few days to allow the knots to tighten and form into dreadlocks.


7. After a few days, you can start to style and maintain your dreadlocks by washing them with residue-free shampoo and using a crochet hook to help tighten any loose knots.


8. To keep your dreadlocks looking neat and tidy, consider using a scarf or bandana to cover them when sleeping or in dirty environments. Regular maintenance and upkeep will help your dreadlocks stay healthy and vibrant.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How do I send email with a compliant email list and unsubscribe links?


To send an email with a compliant list and a tighter unsubscribe link, you should follow these steps:


1. Ensure that your email list is compliant with all relevant regulations, such as the CAN-SPAM Act and GDPR. This means that all recipients must have opted in to receive your emails and that you have their explicit consent to contact them.


2. Include a clear and prominent unsubscribe link in your email. Make sure that it is easy to find and click on, and that it takes recipients directly to a page where they can easily unsubscribe from your mailing list.


3. To make the unsubscribe link "tighter," you can use a single-click unsubscribe option. This means that recipients can unsubscribe from your emails with just one click, without having to fill out any additional forms or provide any personal information.


4. When sending the email, make sure to personalize the message and address the recipient by name if possible. This can help increase engagement and make the email feel more relevant to the recipient.


5. Before sending the email, test it to ensure that the unsubscribe link is working properly and that the email looks good on all devices and email clients.


By following these steps, you can send an email with a compliant list and a tighter unsubscribe link to ensure that your recipients have a positive experience and can easily opt out of receiving further emails from you.

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


Why do people implant nfc implants in their hands?


There are several reasons why people choose to implant NFC (Near Field Communication) implants in their hands:


1. Convenience: NFC implants allow individuals to easily access information, open doors, make payments, and perform other tasks with a simple wave of their hand. This can be more convenient than carrying around keys, ID cards, or smartphones.


2. Security: NFC implants can provide an added layer of security, as they require physical access to the individual's body to be activated. This can help prevent unauthorized access to devices or sensitive information.


3. Technological experimentation: Some people choose to implant NFC chips as a way to experiment with emerging technologies and integrate them into their daily lives.


4. Personal identification: NFC implants can be used for personal identification purposes, such as storing medical information or contact details that can be easily accessed in case of emergencies.


5. Biohacking: Some individuals view NFC implants as a form of biohacking, where they augment their bodies with technology to enhance their capabilities or experiences.


Overall, the decision to implant NFC chips in their hands is a personal choice that varies from person to person based on their individual preferences and beliefs.


קאָנווערט אַליין

דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי


How is the crypto market growing so quickly?


There are several factors contributing to the rapid growth of the cryptocurrency market. 


1. Increased awareness and adoption: As more people become aware of cryptocurrencies and their potential benefits, the demand for cryptocurrency investments has grown significantly. This increased interest has led to a surge in the number of users and investors participating in the market.


2. Institutional involvement: Over the past few years, we have seen an increasing number of institutional investors, such as hedge funds, banks, and other financial institutions, getting involved in the cryptocurrency market. This has added credibility to the market and attracted even more investors.


3. Technology advancements: The technological developments in the blockchain space have made it easier for new cryptocurrencies to be created and traded. Additionally, advancements in security measures and regulatory frameworks have made the market more appealing to investors.


4. Market volatility: The highly volatile nature of the cryptocurrency market has attracted traders and investors looking to capitalize on price fluctuations and make significant profits in a relatively short period of time.


5. Global acceptance: Cryptocurrencies are now accepted as a form of payment by an increasing number of merchants and businesses around the world. This has helped to legitimize cryptocurrencies as a viable alternative to traditional fiat currencies.


Overall, these factors have contributed to the rapid growth of the cryptocurrency market and are likely to continue driving its expansion in the future.


דורך Daisy / מיינונג | ייַנקויפן | קויפן מיט קריפּטאָקוררענסי




https://glamgirlx.com -


(גיט אָדער צאַפּן צו אראפקאפיע בילד)
פאַכמאַן פאַרווייַלונג, פאָטאָס, ווידיאס, אַודיאָ, ליוועסטרעאַמינג און גלייַכגילטיק שפּיל, ווי געזונט ווי שייַן סקאַנינג, וועב אַנטוויקלונג און סערראָגאַסי באַדינונגס.

לאָזן מיר אַ שפּיץ אין ביטקאָין מיט דעם אַדרעס: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE

© Glam Girl X 2025

תּנאָים פון סערוויס