Pitopito kōrero - Tirohia te Pae
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 ...
Te ako i te Tukutuku hohonu me te Haumaru i runga i te tauira

Te ako i te Tukutuku hohonu me te Haumaru i runga i te tauira Putanga tuatoru Charlotte Harper Hōngongoi 3, 2024 Whakahoutia / Whakahuri i te Hune 3, 2025

Matapae:

Ko nga whakaaro mo te haumarutanga mo te hanga kaupapa mo te paetukutuku he waahanga nui o te mahere kaiwhakawhanake paetukutuku i te mea e hangai ana he prototype e whakawhirinaki ana, e mau ana, e whai hua ana hoki mo nga kaupapa whaitake. Ko te Dom (tohu tohu tuhinga), me te whakamahi i te raupaparorohiko, me te whakamahi i nga kaupapa me nga mahi whakahirahira, me te whakakao i nga mahi auaha me nga mahi whakahirahira e pai ana ki te toharite Ko Joe, te kaiwhakamahi mutunga e rapu ana i te waa, ki te tiki ranei i tetahi mea i runga i te Ipurangi, i te nuinga o te taputapu atamai paarua. Ko te nuinga o te iwi kaore ano kia mohio ki te tiimata i te wa e hiahia ana ratou ki te hanga paetukutuku mai i te waa, me te whakamahi i nga taputapu kaha ki te whakamahi i nga taonga mo te whakamahi i te waa e hiahia ana ki te whakamahi i te waa e pai ana ki te whakamahi me te Te ngawari. Mena he meneti ruarua koe ki te panui i tenei pukapuka me te ako i nga mea e hiahia ana koe ki te ako ki a koe, me te whai i nga waahanga o te hunga e hiahia ana koe me te whai i nga hiahia o to hunga whakarongo.

Mo ahau: He kaiwhakawhanake rorohiko ahau me te whānuitanga o nga wheako i C / C ++, Java, Python, HTML, CSS me Javascript. Ka hanga e ahau nga paetukutuku e hiahia ana ki te whakamahi, e hiahia ana ki te toro, me te taapiri i te waa ki te ako, ki te whakangahau i te waa, me te mea nui, ka hokona e ahau te kaupapa. Mena he whakaaro taau e hiahia ana koe ki te tiro me te mahi, ka pai koe ki te whakatau i aku ake hiahia, ko te taupānga haumaru-hangarau ka taea e koe te uru atu. Engari ki te ngana ki te hoko atu i taku waa, kei te ngana ahau ki te hoko i a koe ki te hanga i tetahi korero hei whakakapi i tetahi waahanga mahi motuhake. A kia marama ahau, ko te maatauranga ka hoatu e ahau ki a koe he ōpaki. Ka taea e koe te haere ki te kura me te ako i enei katoa me te maatauranga i tenei kura, me te panui i a koe i to maatauranga, engari kaore au e tuku i a koe ki te noho wera. Ehara ahau i to kaiwhakaako, ka taea e koe te whakaaro ki ahau ano he hoa e hiahia ana ki te arahi ia koe ki te mahi angitu i a koe ake. A kaore au e hoko atu i a koe kia angitu, me hoko koe me to waa. Ko te ako ki te waehere he pihi ako nui, kaore ano hoki i te ngawari, ka kiia ranei. Me mahi uaua koe kia taea ai e koe, ka ngana tonu ki te ngana me te ngana ano i te wa e raru ana koe ki te ako me te hanga i a koe ano. Ko te ahua o te waehere ake. Kei te whakahaerehia te waehere e te kaikohi kua hangaia hei hoatu i nga karere hapa kaiwhakaorohiko, a ma enei koe e whakaatu ki te tohu, ahakoa kei te kape koe i te hapa a te tangata rapu. Me ki atu hoki, Kaore koe e tino whai taonga, he mohio, he angitu, he rereke ranei, he mea whakarite ranei ki te hanga i tetahi taupānga. Kei te tiaki te rorohiko i taua whakahaere mo koe. Me tohe noa koe i te whakawakanga me te he, kia mau tonu te aro ki a koe, a ka whai waahi angitu koe i te katoa o taau mahi.

Ko wai ahau: Kei te mohio ahau ko te waahanga whakamutunga he nui ake mo te ako me te whai i nga huarahi mai i tenei pukapuka. Ko wai au? He patai uaua tena. Kaore au i te mohio i ahau ano, ka mamae ahau i nga tikanga hauora ka taea e au te tuhi i tenei pukapuka, i nga wa e whakaatu ana i taku oranga. Hei poto, ki te panui koe i tenei pukapuka, i kawea e koe ki te kaainga na te mea kua pania koe, ahakoa he rite tonu koe ki te kite i nga mea katoa e hiahia ana koe. Ko ahau tetahi miihini, he kaiwhakawhanake rorohiko, me te akonga, a ka tuhi ahau i tenei pukapuka mo te tuku i o raatau oranga ki te mahi angitu i te angitu kaore i te angitu ahakoa te raina pakihi. Te nuinga, koinei taku mahi: Ka hanga e au nga taupānga hei awhina i a au ano me etahi atu e angitu ana. He kaituhi ano ahau, ahakoa koinei taku panui tuatahi e hiahia ana ahau ki te whakaoti i taku kōpaki ki te tuhinga whaihua, a he kaitoi ano ahau. Ka whakaae atu ahau ki a koe, he ahua ke ahau. Kaore au i te tino tika, kua whakahaerehia e au me te ture i arahi ai ahau ki te waiho i nga kaareti me nga whare wananga me te wehe i tetahi ingoa mo au ano he angitu ake. He wahine ahau na te whanautanga, ka mau ahau i nga kakahu, ka mau i nga kakahu o nga kakahu me etahi atu wahine, a ka mohio au ki a au ano he wahine. I a au ano etahi atu iwi i nga wa o mua ka arahi ki nga tautohetohe me te whare paetukutuku, a ka whakaparahako ahau kaore i taea e au te tiki i tenei pukapuka. Ka hiahia koe ki te panui me te tuhi waehere e rite ana ki aku mahi, engari kia pai ake ai koe ki te hoko i to papapātuhi ki te tono moni. I a au katoa nga take mo te whanau e tipu haere ana, ko nga tikanga hauora, ko te ture, ko te ture, ko te ture, ko te ahua o taku ture me te ahua o te ao. Heoi, ko tenei pukapuka tetahi mea e tino aro ana ahau, taku tamaiti, taku kohungahunga, na taku oranga, na reira ka maioha ahau ki a koe kia akohia e koe. Tena koa kia mahara kaore au i te tino tika, ko tenei pukapuka he he, me nga tuhinga hou, a ka hiahia koe ki te whakaaro me to wheako angitu me taku tuhi. Me mohio ano hoki ko au te tikanga mo koe ahakoa ka aro koe ki nga wero ina tuhia ana. Whakaarohia tenei: Ka taea noa e koe te riihi i tetahi punaha rorohiko hei whakaaro i nga korero e pa ana ki a koe, me te mohio ki nga korero e pa ana ki a koe me te whakaputa. Ka korerotia e ahau ki a koe tenei na te mea ka raru au i nga uaua. Whakamahia tenei pukapuka i a koe ake, me mahi tahi me to hapori me o hapori ki te hanga i tenei tuhinga, kaore i te kaha ki te mahi i te waa o te aorangi o te ao. ka mahi, ko te Ipurangi. Kaore pea koe e tino mohio ki a au ko wai ahau me etahi kupu noa, engari ka akiaki ahau ki a koe kia mohio koe, ka mohio koe ki a koe i a koe e mahi ana i o kaupapa. Kaore he mahi o te whare me tenei pukapuka, i te mea kaore i te kii koe i nga kaiwhakaako me nga kaiako, engari ko te kaupapa capstone e whakaatu ana me pehea e taea ai e koe te whakamahi i nga mea kua akohia e koe. Ko taku kaupapa Capstone te putake mo te nuinga o nga mea ka panuihia e koe i roto i aku kaupapa, me te whakaatu i te ipurangi, i runga i te Ipurangi, i te Ipurangi ranei.

He aha tenei pukapuka: Ko tenei pukapuka he akoranga ma te tauira. Ka taea e koe te kite i te waehere i konei, he tohutohu mo te ako ki te waehere, ki te whakatika i nga waahanga taapiri, me pehea te whakaatu i to waehere, me te whakaatu i to tohu, me te pehea e whakaatu ai koe, me pehea te whakaatu i a koe ano, me te pehea e whakaatu ai koe, me pehea te whakaatu i a koe ano, me te pehea e whakaatu ai koe, me pehea te whakaatu i to tohu, me te pehea e whakaatu ai i a koe ano, me pehea te whakaatu i a koe ano, me te pehea e whakaatu ai koe, me pehea te whakaatu i a koe ano, me te pehea e whakaatu ai koe, me pehea te whakaatu i a koe ano, me te pehea e whakaatu ai koe, me pehea te Whakaahuatanga me to Kamupene. Ana ko te raupaparorohiko e hanga ana e koe i roto i te maarama tino pai ki te waiho i nga mea tino ataahua e taea ana ki o kaiwhakamahi mutunga, nga manuhiri a to paetukutuku. I roto i tenei pukapuka, ka whakaatu ahau i te maha o nga tauira o te hoahoa raupaparorohiko me te arotahi ki te paetukutuku hei paparanga me te haumaru. Ka tiimataa e maatau te wheako ako ma te hanga kaupapa taketake ma te whakamahi i te anga UNIX, me nga waahanga tuhi me nga waahanga tuhi. Na, ka tirotirohia e maatau te paetukutuku blog taketake, te whakahoutanga i to maatau tuhinga me nga whakaahua ataata me te whakamahi i nga raupaparorohiko koreutu, me te whakarite i to maatau miihini koreutu. Ka arotakehia e maatau te whakahaere i te konae me te tukatuka, te tuhura i te whakatika ataata, takoha reo, te karapa karakara me te tohu o te pūāhua. I te huarahi ka tirotirohia e tatou apis hei awhina i a maatau ki te whai hua me te haumaru, me nga whiringa koreutu me te utu. I te huarahi, ka tirotirohia e matou nga taputapu haumarutanga me nga taputapu taapiri me te whakangao me te hoahoa a te kaihoroi, me etahi atu o te punaha me te whakahoahoa. Ka haria e matou te huarahi ki te hanga i nga taakaro, 2D me te 3D te whakawhiwhi i nga taonga mo te ako i nga waahanga akoako mo te raupaparorohiko raupaparorohiko me te miihini hiko hiko. I te huarahi, ka mahi ano hoki matou i nga otinga ako miihini kua waatea kia pai ake ai to maatau punaha. Ka whakamahia hoki e matou nga taputapu putea e waatea ana mo te paetukutuku kia pai ai te whakahaere me te whakarite i te mahi. Ko tenei pukapuka he aratohu ki to angitu i roto i te hanga i tetahi tono paetukutuku me te whakauru ki nga punaha rorohiko me te whakauru i nga aratohu ki te hanga i nga waahanga papamuri me te wheako o mua.

He aha tenei pukapuka kaore: Mena kei te hiahia koe ki te whai paetukutuku, ka taea e koe te whakarite i tetahi toa ngawari me te hoko i tetahi tuhinga, tuku i tetahi tuhinga, tuku whakaahua, ataata ranei, kaore ano kia tuhi i tetahi raina tohu. Ehara tenei pukapuka i tera. Ma tenei pukapuka e whakaatu ki a koe me pehea te hanga i nga punaha e whai hua ana, e whai kiko ana, e kore ano e pai ki te whakahaere i nga mahi a te hunga kaore i te mahi moni. Mena ka whai tata koe ki tenei pukapuka, ka hiahia koe ki te tuhi tohu, te waehere rangahau, hangaia o taau ake taupānga, ka whai moni koe mai i a koe. Ka mahia e au te moni mai i tenei pukapuka, ahakoa i nga wa o mua, na te mea kei roto i nga korero e hiahia ana te iwi me te hiahia ki te pānui i a raatau ka hoko mai ranei i aku mahi. Kaore tenei pukapuka e hanga i tetahi taupānga mo koe, engari ka tohu koe i te huarahi tika me nga tohutohu ka uru atu koe ki te raupaparorohiko.

He aha taau e ako: Ma tenei pukapuka e ako ki a koe me pehea te hanga me te hoko rorohiko, te raupaparorohiko raupaparorohiko, he panui me nga whakaahua a-rohe, me te whakawhiti i nga korero a Belourtooth me te Whakataetae. Ma tenei pukapuka e whakaatu ki te whakamahi i te rorohiko hononga, me pehea te hanga i nga tohu taapiri me te whakahoahoa i nga waahanga CSS. Mo te whakaotinga, etahi atu kaupapa ranei, te matawai id, te whakaahua me te ataata a Microtransance ataata kia mau ai to rorohiko, te utu utu, me te maha atu. Ka ako koe me pehea te hanga i a koe ake taputapu Nihokikorangi, me nga kaikopere, nga kaikopere, nga huringa, nga motuka, te whakamahi i te kaihoko, me te 3D nga taonga. Ka whakaatuhia e au nga tumuaki hoahoa 3D i whakaritea ki te hanga me te hanga i nga taputapu, kia taea ai e koe te hanga i o ake ake whakakahiko, hei kaikiri, nga waahanga hiko. A whakaungia ano ratou me te Nihokikorangi me te Tukutuku. Ma te motuhake, ka tirohia e tatou nga rangahau rereke e rua, he papa nui me te papaa kaainga, e waatea ana hei taapiri whakairoiro, i te waahanga raina whakahau ranei ka uru ki te paetukutuku mo nga hua tere. Ka ako koe me pehea te hanga me te tohatoha i tetahi paetukutuku mai i te whenua kaore he wheako o mua, kia whai kiko, kia pai, whaihua me te tino mahi. Ka ako koe me pehea te whakamahi i te miihini ako me te rorohiko kia taea ai te hono atu ki o paetukutuku, me pehea te whakahoki mai i nga korero whaihua hei hanga i nga korero me to umanga. Ko tenei pukapuka ka tino aro nui ki te pāpāho, te haumarutanga me te ako miihini e toru hei awhina i a koe ki te hanga i nga mahi he, me te kaha, me te kaha. Ko tenei pukapuka e whakaakona ana ki a UnIX, motuhake a Debian (Ubuntu), Python, HTML, HTML, HTML, HTML, Javascript, me te whai hua pai o te Pūmanawa me te FFMPEG. Ka whakaakona ano e ahau ki a koe me pehea te hokohoko aunoa, ka tango i nga utu i roto i nga kaari nama i nga wa katoa ka whai waahi koe ki te mahi. Ka whakaakona koe e koe ki te mahi moni mai i to paetukutuku ma te panui ano hoki mo nga miihini rapu me te mahi tere ki te rapu i a koe, me te tirotiro i nga rapunga noa. Ka whakaakona koe e ahau ki te hoko i to rorohiko, panuihia, tono ki nga kiritaki e rapu ana i o ratonga, me te whakarite i tetahi mea kua noho ke, he pai te mahi, he pai te mahi. Ka ako ahau ki a koe me pehea te whakaora i o raraunga i runga i a koe me te whakaora i o raraunga, me pehea te tango i to paetukutuku me nga tohu o te paatene. Ma tenei pukapuka ka aro ki te whaikorero me te tohatoha i nga purongo, mai i te tuhinga ki nga kaiwhakamahi, me te pai ki a koe. Ka ako hoki koe i etahi tohutohu me nga tinihanga mai i ahau, mai i nga tohutohu conding, he whakaahua me te mahi he pai ake te whakamahi i a koe me te mahi. Ka kiia tenei pukapuka "whaihuaKo te akoako i te paetukutuku me te Haumarutanga "mo tetahi take: Ko te waahanga ako, me nga tauira ako, me te whakahoahoa whakaahua, te whakarei ake i te whakaahua, te whakarei ake i te whakaahua, te whakarei ake Te whakarei ake, ko te ahua o te tohu i hangaia mai i nga whakaahua, na te ahua o te whakaahua, he pai ake te whakamahi i nga mahi. kanohi Ko te tangata e hanga ana i nga mahi a te hunga he tino pai te ahua o te ahua o te mahi. Ko te raupaparorohiko he koretake na te mea ko nga whakaaro me nga kaute e whakamahia ana e tatou, kaore i te waa i roto i te ringa o te tangata e mate ana ki te rorohiko. Koinei tetahi mea o te arotahi o tenei pukapuka. Ko te rorohiko i hangaia ma te taunoa kua mau ki te tohu roa, ka kiia ko te SSH, he pai te noho me te tūmau paetukutuku, na te mea ko nga taputapu haumaru a te Toi. Ko te tūmau paetukutuku te whai wāhi atu ki te paetukutuku tukutuku a te kaiwhakamahi, e tino kaha ana ki te taputapu kaiwhakamahi, na te mea ko te waahi ka taea e te kaiwhakamahi te whakauru i nga punaha whatunga. Ka taea e tenei taputapu taputapu te whakaputa tuhinga, ko te whaarangi e kite ana koe, ka taea hoki te tuhi me te tuhi me te tuhi i nga waahanga o te paetukutuku e tata ana ki te paetukutuku whakawhiti. Paetukutuku. Ma te whakamahi i nga taputapu katoa kei to waatea, me tenei pukapuka ka taea e koe te whakamahi i tetahi paetukutuku haumaru, me te whakamahi i te punaha rorohiko haumaru e mahi ana koe, ka titiro me te ahua me te ahua

Te wahi hei tiimata: Kei te mihi koe ki te peke i te waahanga ka tiimata ahau ki tenei pukapuka me nga waahanga tika, ina koa koe ki te tuhi i nga keehi me nga tauira whai take. Mena kaore he wheako i roto i te tuhi tohu, ka tino taunaki koe kia panui koe i tenei pukapuka katoa, me te tino taunaki kia panuihia e koe nga waahanga o mua, kia tika tenei pukapuka mo koe. Ki te kore tenei pukapuka e tika mo koe, whakaarohia te tuku ki tetahi hoa, ki te whanaunga ranei e hiahia ana ki te ako me te ako i a koe hei kaiwhakaako, i etahi atu kaiako ranei i mua i ahau. Tīmata i hea koe, ko nga waahanga katoa o tenei pukapuka ka whai hua mena ka hiahia koe ki te hanga i tetahi taupānga whai hua, me whakaaro ko nga taupānga pai ka hangaia me to kaihoko. Katahi koe ka mohio ki ahau, e mohio ana koe ki tenei pukapuka, a kua rite koe ki te timata. Hei tiimata, hopu i te rorohiko (ara te pona iti mai i te toa pouaka, amazon, he mahi papamahi tawhito ranei, ka whakaturia ki runga i te huarahi e mahi ai koe.

Me pehea te panui i tenei pukapuka: Ko te tuhinga i whakaatuhia, e whakaatu ana ko te tuhinga kei roto i te whakahau whakahau, ka tuhia e koe te waehere ka rere koe. Ko te akiaki whakahau he nui rawa te papapeta e arotahi ana me te iti rawa ki te paato, ka tere ake to mahi me te mahi i nga mea e ngawari ana ki a koe.

Te tiimata: Kia haere tatou ki roto. Ka tiimata matou ma te hanga waehere i runga i te miihini rohe ka tiimata me te kore e hanga paetukutuku hono ki te Ipurangi. He haumaru ake tenei ki te tiimata me te utu, kaore he utu, he ngawari hoki ki a koe. Kei runga i to punaha whakahaere, ka uru atu ki roto i te anga Bash he iti noa iho. Mo te Mac OS, ka tūtohu ahau ki te whakauru i tetahi miihini mariko i tenei wa, na te mea ka whiwhi koe i te tino hototahi me te miihini mariko. He maha nga kaiwhakarato penei i te Virtualbox me nga paralells ka taea te whakahaere i te miihini mariko ki a koe, mena ka taea e koe te whakauru i te Ubuntu i runga i te miihini, ka pai ake koe ki te whakamahi i te wheako tere. Mena kei te whakamahi koe i te Linux, i nga matapihi ranei, e taunaki ana ahau, me tino ngawari ki te hanga kaupapa. Whakatūwherahia to tauranga, whakatika i te rahi o te kitenga i a koe, ka tiimata i te taahiraa 2. Mena kei te whakamahi koe i nga matapihi, me whai i te taahiraa 1.

Hipanga 1: - Nga Kaiwhakamahi Matapihi anake I nga matapihi, whakatuwhera i te whakahau whakahau i te kaiwhakahaere me te momo WSL -Install

Hipanga 2: - Haere tonu ki konei, ka peke ranei i te taahiraa 1 ki konei mena kaore koe e whakamahi matapihi I roto i te tauranga tuwhera, (i runga i to OS, e kiia ana ko te Ubuntu i te Matapihi, te tauranga i Mac, i te Linux ranei, he ingoa rite ranei), ka tiimata i tetahi kaupapa. Ka mahia e matou tenei me te whakahau Mkdir, na reira ka hangaia he whaiaronga. Mena ka hiahia koe ki te hanga i tetahi raarangi ki te rokiroki i to kaupapa, e taunakitia ana, whakamahia te ota CD hei huri ki te whaiaronga me te

CD / Ara / Tohu - Ko te ara ko nga kōpaki (konae) i mua i to raarangi tuku iho, ko to ara taunoa he ~ me te ingoa ingoa ranei (kei hea te ingoa ingoa ingoa). Hei huri ki te whaiaronga taunoa, patohia te CD, CD ranei CD ~ Tauira MKDir - Whakakapihia te "Tauira" me te ingoa o te whaiaronga

Inaianei kei a koe he whaiaronga mahi mo to kaupapa. Ko te mea he mea tino nui kia tiakina tenei whaiaronga ki te whakawhiti i tetahi miihini rereke, ka tohaina ranei e koe te tuhi, ka hangaia e matou he tuhinga hei whakahoki ake i to raarangi. Engari ko te hanga i tetahi tuhinga he waahanga tohu, me te waehere me aunoa kia taea te whai hua. Na, kia hanga tatou i tetahi tuhinga hei hanga i nga tuhinga tuatahi. Me timata ma te hanga i te tuhinga tuhi me te whakaputa i te reira. Ka whakamahia e matou a Sudo, Chmod ka pa ki tenei, ka karanga i te tuhinga tuhi ".

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

Inaianei kua hanga e matou te tuhinga i hangaia, kua oti te whakarite, a kua rite ki te whakatika. Ko Nano he kaiwhakamahara tuhinga ka tuku koe ki te whakatika i nga tuhinga me te kore e pai ake, he ngawari ake te whakamahi i te atanga kaiwhakamahi whakairoiro. Hei whakatika i tetahi konae me te nano, whakamahia te nano me te huarahi ki te konae. Hei hanga tuhinga mo te tuhi tuhinga, he rite tonu ki te hanga i a maatau tuhinga i te tuatahi. Ka whakamahia e matou te waehere kotahi i runga ake nei, ka whakakapi i te ingoa o te tuhi, "Hoatu" me te tohu tautohetohe, $ 1. Ma tenei ka karangahia e matou te tuhinga tuhi ma te pato noa i te tuhinga a Sudo me te tuhi i nga tuhinga hou ma te whakakapi i te "Newsp tuhi" me te ingoa o to tuhi. Ko te tohu i te Nano me penei te ahua:

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

Me te kati i te nano, ka taea e tatou te pupuri i te kī mana me te pēhi i te x, katahi ka tohua e tatou te penapena. Na, hei whakakapi i enei whakahau e toru hei whakatika i tetahi tuhinga, ka taea e matou te patopato i te tuhinga a Sudo ki te whakatika ano i te tuhinga. Ka mahi tenei! A ko nga tuhinga hou ka taea te whakahaere ngawari ma te waea i roto i te anga. Kia ora a maatau mahi inaianei: Me tuhi e tatou he tuhinga kape hei whakaora i a maatau tuhinga hou ka hoki mai ano i roto i ta maatau whaiaronga kaupapa, i te wa e tautoko ana hoki i te tuhinga kape.

sudo ascript backup

Na, i Nano:

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

Kei hea / ara / ki / whaiaronga ko te huarahi ki te kaupapa i hangaia e koe me Mkdir. I muri mai ka ako matou me pehea te kape i nga huarahi tukurua penei me te riipene me te raarangi, he iti ake te waehere, engari me pupuri e koe he ngawari noa. Hei whakahaere i tenei tuhinga me te whakahoki i to waehere, penapena i te konae i Nano me te Mana + X, Y ka hoki mai, ka patopato i raro i to anga

backup

Mena kei te akiakihia koe mo te kupuhipa i a koe e panui ana i tenei pukapuka me te whai i te taha o te kupuhipa kaiwhakamahi, ka toru nga whakamatautau i mua i te whakahaere i te whakahau. Ka taea e koe te whakamahi i nga pere whakarunga me te heke ki nga whakahau a Rerun me te whakatika, me whai koe i tetahi mea e rua. Ko te maamaa ngawari ki runga ake ka heke iho ki te whiriwhiri i tetahi whakahau, i mua i te whakatika i te whakahau me te taha maui, ka waiho ki te papapātuhi, me te hoki mai ano.

Mihi I taea e koe te hanga i tetahi tuhinga kape whakamataku ka tautokohia e rua nga tuhinga anga nui i roto i to whaiaronga mahi. Ka neke pea maatau nga mea i muri mai i te mea ka nui ake te kaupapa, engari ko tenei mahi mo naianei. Kia neke haere tatou ki te tautoko i te kapua, ka whakamahia e matou etahi atu rongoā Git mo te punaha, ka taea e koe te whakahoki i a koe ki te tuku i nga kape o to rorohiko i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa i muri i tetahi kupuhipa. He mea nui ki te penapena i to rorohiko, ina koa ka heke matou ki nga waahi Linux i etahi wa ka kore e taea e koe te tautokohia i te wa e kore ai e taea e to waehere te whakahoki mai i a koe.

Mena kaore koe i te whakamahi i te miihini Virtal Vaguntu i tenei wa, ka whakahoki ahau ki te miihini abunttu Vaguntu i tenei wa ka taea e to koiora te whakauru i tetahi paetukutuku mahi me te whakatairanga i nga mahi ako hohonu i runga i to rorohiko. Ka nukuhia e matou te waehere ki tetahi tūmau Tukutuku i te wa e heke mai ana, engari e hiahia ana matou kia pai ake etahi paparanga o muri o to maatau kaiwhakarato paetukutuku kia pai ai te mahi. Mena kei te hiahia tonu koe ki te whakamahi i te Mac OS, ka maioha koe ki te rapu me te whakauru i nga kete e tika ana i te ipurangi, engari kaore pea he whiringa mo nga kete katoa tenei pukapuka ka hipoki.

Kia taapirihia etahi whakahau hei mahi i a maatau mahi me te tuhi tuhinga ma te whakahaere i te whakahau Sudo Adgrip Badhiap pūrua.

# ...

Kia ano, whakahaere x hei whakaora.

Inaianei me mahi taatau i tetahi whirihoranga mo tenei kaupapa. Na te mea ka roa ka waiho hei kaupapa Git, kaore e hiahiatia kia pato i nga whakahau katoa mai i te kohinga GIT, engari ka tuhia e tatou o maatau tuhinga. Hei tiimata, kia mohio tatou kei roto matou i te raarangi tika me te whakarite i te kohinga GIT me te whakaputa i nga tohu SSH.

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

I muri i ta maatau SSH-keygen, me penapena te mea hou ki te kōpaki kaainga i raro i te kōpaki e kiia ana. Ka kiia ko te ID_RSA.PUB. Kia kitea e tatou tenei matua ka kape. Kia kite,

cd ~
cat .ssh/id_rsa.pub

Tāruahia te kuputuhi i whakahokia mai e te whakahau whakamutunga, ka hangaia he kaute me to kaiwhakarato Git (he Githib), i mua i te taapiri i te tohu SSH ki to putea. Ina whai koe i tetahi kaute, paatohia te rarangi matau matau me te whakauru i nga tautuhinga o runga, i mua i te taapiri i to tohu SSH i SSH me nga Kete Gpg i raro i te tahua. Tīpakohia Tāpirihia he kī SSH ka taapirihia e koe ki te whakaputa i te taitara, i mua i te penapena me te hoki mai ki Githib ki te hanga i tetahi kohinga hou. He rite tenei mo etahi atu kaiwhakarato GIT, me panui koe i a raatau tuhinga. I roto i te whirihoranga hou hou, hoatu to tohu i tetahi ingoa whakaahuatanga me te whakatau mena ka hiahia koe ki te whakaputa, ka mohio kia kore ano e whirihora i nga konae mo te whakauru. Ina hangaia te kohinga, kape i te kapo me te URL, ka whakapiri ki roto i te whakahau e whai ake nei.

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

Inaianei ka taea e koe te hoki ki to putunga me te CD, ka mohio koe ki tenei. Whakamātauria to tuhinga kape inaianei me te whakahoki

Nui! Inaianei ka taea e taatau te tiki tohu. Me whakauru e matou a Django inaianei kei a matou te pai ki te peke me te git. Ma te Django ka tuku aunoa i a maatau punaha, me mahi ano hoki a Django ki te mahi haumaru ake (ka taea te whakakorehia me te whakariterite ngawari).

Hei Tāuta Pūmanawa i Ubuntu, ka whakamahia e matou te whakahau Sudo. Tuatahi, me whakahou me whakapai ake i te punaha kua a maatau. Ka taea tenei me te whakahou i te Sudo Apt-Tikiake me te Sudo Apt-Tikiake Whakahoutanga -y. Panuku, me whakauru e tatou a Python me to tatou taiao mariko, te kaainga o ta maatau waehere, me te whakahau e whai ake nei: Sudo apt-get tāuta Python-i-Python3-venv

Koinei anake te mea e hiahia ana koe ki te haere me te Django i runga i nga raupaparorohiko raupaparorohiko i roto i te tauira Ubuntu. Mo te Matapihi me te Linux me tino tika, engari mo te Mac e hiahia ana koe ki te whakauru i tetahi miihini mariko me te papamahi mariko me te whakahou i nga waahanga o runga ake hei whakarite i tetahi taiao Ubuntu. He mea nui a Ubuntu i tenei keehi na te mea ko te punaha ka rere nga paetukutuku me te taea ki te manaaki i nga paetukutuku me nga taonga katoa.

Kia keri ki te Django.

I roto i ta maatau whaiaronga, me CD:

python -m venv venv # Hangaia te taiao mariko kei te rongoa te waehere
source venv/bin/activate # Whakahohe i te taiao mariko
django-admin startproject mysite . # Kei hea te kaupapa ko te kaupapa e tiimata ana ahau i roto i taku whaiaronga o naianei.

Kei te tiimata noa a Django, na te mea ko Django te whakahaere i te tūmau paetukutuku me te mahi i nga mea katoa e tika ana kia whiwhi i te paetukutuku taketake me te rere. Na, kei a matou a Django i whakauruhia, kia whakatika i nga tautuhinga he iti te mahi kia pai ai ta tatou hiahia. Tuatahi, kia waihangahia he taupānga hou

python manage.py startapp feed

Ka kite koe i te taupānga tuatahi e kiia ana ko te whangai. Me karanga te taupānga Ko taau e hiahia ana, ka hangaia e matou nga taupānga hou, engari ko te ingoa o ia taupānga me riterite i ia waa ka whakaatuhia te taupānga i roto i te waehere. Hei Tāpiri i tetahi taupānga hou, ka whakatika tonu maatau i nga waahanga taapiri i tetahi atu raarangi i hangaia e te taupānga i hangaia, i tapaina ki StartProject, Aneifter taupānga. Ma te whakamahi nano,

nano app/settings.py

I nga tautuhinga, kitea whakauruhia_apps me wehe te [] kia 3 nga raina. Ma te whakamahi i nga waahanga e wha i runga i te raina pokapū tuuturu, whakauruhia te 'whangai', ko te ingoa ranei o to taupānga. Ko tenei waahanga o nga tautuhinga (me penei te ahua:

INSTALLED_APPS = [
    'feed',
]

I mua i a maatau e wareware ai, me whakamatau tatou kei te mahi a Django. Ma te whakamahi i te Kaiwhakahaere Python mana whakahaere 0.0.0.0:8000, ka taea e matou te whakahaere i te tūmau paetukutuku i te rorohiko e whakahaere ana i te paetukutuku ki a HTTP:

Na, me keri tatou ki te tuhi i etahi tohu Python. E toru nga waahanga nui a Django, ka whakahaerehia e ratou katoa te waehere. Ko nga waahanga e kiia ana ko te tauira, te tirohanga me te tauira, me ia kei te taumata teitei ake i mua i te tuku i te paetukutuku ki te kaiwhakamahi.

Ko te tauira ko te waehere e penapena ana i nga korero i roto i te papaainga mo te whakahoki mai, te haahi me te tuku.

Ka whakatauhia e te tirohanga te ahua o te tauira, ka haangai, me te whakarereke, tata ki nga tirohanga katoa ka whakamahi tika i tetahi tauira.

Ko te tauira ko te waehere HTML me etahi pere taapiri me te whistles e kiia ana ko te reo tauira. Ko te tauira ka tukuna e te tirohanga kua whakakiia ki te waehere python me te horopaki penei i nga tauira me nga korero) mai i te tirohanga.

Kei a Django etahi atu waahanga, tae atu ki te kore e iti ki te:

Tautuhinga, e whakarite ana i te taupānga i a maatau e korero ana.

URL, he tauira e whai ake nei te kaiwhakamahi ki te whai waahi ki nga waahanga motuhake o te tono paetukutuku.

Ko nga momo, e tautuhi ana me pehea te whakahaere i nga korero e tukuna ana ki te kaituku, ka tukuna ki te papaa raraunga tae atu ki te kaiwhakamahi. Koinei te putake o nga korero tukatuka i runga i te tūmau, a ka taea e ia te whakaae ki nga momo rorohiko, te nuinga o nga aho, nga nama, me nga BoolOxt pono (te nuinga o nga pouaka).

Ko nga tauira, ko te waehere HTML me te tauira tauira, ka taea te mahi i te paetukutuku me te whakauru i te paetukutuku me te whakauru i te waahanga o te PYTHL.

Kōnae Stitic, ko te tikanga ko te JavaScript me te whare pukapuka e mahi ana te kaituku, ka hono ki te tauira.

Kōnae pāpāho, e noho ana te tūmau, kei te whakahaerehia ranei, kua tuhia ranei ki te kaituku i mua i te tukatuka me te tuku ki tetahi atu tūmau (he peere) mo te manaaki.

Mihinga, ko nga waahanga o te waehere e whakahaerehia ana i te wa ano i te tirohanga katoa, a ka kiia ko "te" i te tirohanga.

Nga Tukatuka horopaki, e mahi ana i te horopaki o ia tirohanga me te whakamahi hei taapiri i nga horopaki taapiri.

Ko nga whakamatautau, e whakamana ana ko te kaiwhakamahi, te tono ranei i te wa e hiahiatia ana etahi whakaritenga i mua i te tirohanga o te tirohanga.

Ko nga kaihoko, e kii ana me pehea te whakahaere a te Impsockets me te whakautu ki te whakawhitiwhiti korero.

ADD, e whakamahia ana hei rēhita i nga tauira kia taea ai e ratou te whakauru i roto i te whaarangi whakahaere Django, kei reira te whakahaere i te putunga korero ma te atanga whakairoiro.

Ko te herewi, e tautuhi ana i nga mahi o te waehere Django ka tiimata i te rere i mua i te mahi tonu ki te mahi o muri mai ranei.

Ka taea e Django etahi atu waahanga, ka korerohia e tatou i konei. He nui nga huarahi hei mahi i te Django Whaiaro, te taapiri i nga paetukutuku, he tere, he maha nga waahanga whakawhitiwhiti korero, he maha nga waahanga o te tohu. Ko nga mahi Tirohia nga mea nui na te mea ko te tikanga ka kii ratou i nga waahanga waehere katoa e tau ana ki tetahi tauira URL motuhake, he waahanga ranei o te kaituku.

Tuatahi, kia tirotiro tatou i nga mahi tirotiro. Ka tiimata nga mahi ki te kawemai i te waehere tohu ka whakamahia i roto i te tirohanga, a, kua tautuhia te whakamahi i nga whakamarama mahi, akomanga ranei. Ko nga tirohanga ngawari e tautuhia ana e te whakamāramatanga o te whakamāramatanga mahi, ka whakahoki mai i te httpussashose me te tauira taketake. Me timata ma te tautuhi i tetahi tirohanga taketake ki te whakahoki i te tuhinga "Kia ora". Kia maumahara ki nga wa katoa ka taapirihia e koe he waehere i muri i te whakapae penei i te Def, mena, mo etahi atu, me etahi atu, me taapiri e koe nga waahanga mo ia kaupapa. Ka tae atu matou ki te mea ka tae mai nga tikanga katoa.

Mai i te raarangi whaiaronga a to maatau papaanga, whakatika i te konae kai / tirohanga ki te whakamahi i te nano me te taapiri i nga raina e whai ake nei ki te mutunga o te konae.

from django.http import HttpResponse

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

Ko te whakautu a te HTTPresponse a Django me te aho kuputuhi, e tohu ana i te whakatuwheratanga me te kati '. I nga wa katoa ka tukuna e koe nga korero ki tetahi mahi, ki te akomanga ranei, penei i te tono, i te aho ranei, me whakamahi e koe nga tohu (, whakatuwhera me te kati).

Ehara tenei i te mea katoa e tika ana kia kite ano i a maatau tirohanga. Ae ra, kaore ano kia korerotia e matou ki te tūmau e tino rite ana te tirohanga, me tautuhi tonu e maatau te huarahi kia pai ai te tirohanga. Me timata ma te tautuhi i tetahi huarahi taketake i te App / URLs.py, ka uru atu taatau ki nga roopu huarahi i muri mai.

I roto i te App / Ulls.py, taapirihia he raina i muri i nga korero kawemai i muri i te tiimata o te tono i hangaia e matou.

from feed import views as feed_views

Na, kia tautuhia te tauira tirohanga. E toru nga waahanga o nga tauira, e kii ana i te tirohanga i roto i te raarangi, na reira ka taea te whakarereke i te waahi, me te whakauru i tetahi ingoa mo tetahi atu tirohanga. He mea nui ki te mahi i tenei ara me te ngawari, na te mea ko to waehere codebASE he taiao e hiahia ana kia ngawari, kia ngawari hoki te mahi. Anei te ahua o to tirohanga, ka taea e koe te taapiri i tenei ki te URLpatterns = [waahanga o te App / URLs.py. Ko te tauira tirohanga e tautuhia ana me nga waahanga e toru i whakaahuahia i runga ake nei, a ko tetahi mahi e kiia ana ko te ara. Ko to tauira URL he raarangi, na kia mutu tonu nga mea katoa i roto i a raatau me te piko, na te mea ka wehe tenei. Ko ia taonga me haere ano i runga i te raina hou, kotahi ano me nga waahi e wha i mua i a ia, penei i te taupānga i roto i te Tautuhi Tautuhi.py. Ka tautuhia e matou te waahanga tuatahi o te tirohanga me te mahi aho koreutu, kia hangaia ai e te tirohanga e rere ana i runga i te raarangi pakiaka o te tūmau Tukutuku. Me penei te ahua o to URLs.PY:

from feed import views as feed_views

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

Koinei te putake mo te hanga paetukutuku me te Django e tino totika ana. Kia pai ai te paetukutuku hihiri ki te tiimata i nga korero, penei i nga whakaahua, nga ataata, nga oro, me te maha o nga tauira, ka tirotirohia e maatau nga tauira. Inaianei, tirohia to maatau waehere me te whakahaere i te tūmau. Hei tirotiro i te waehere mo nga hapa, rere:

python manage.py check

Mena he karere hapa, me arotakehia e koe nga huringa i mahia e koe ki to taupānga me te kite i tetahi mea e tika ana kia whakatauhia, kia rite ki te taapiri, he taapiri kaore i te mate, tetahi atu mea kua whakakorehia, tetahi atu mea ranei. Ko te panui i te karere hapa (mena kei a koe tetahi), me kite koe i te huarahi ki tetahi konae i hangaia, i te raarangi me te raina ka taea te whakatika i nga mea kei reira. Mena kua whakatauhia e koe te take, whakahaere ano i te whakahau i runga ake nei. Ina rite ana to rorohiko ki te whakahaere, kei te mahi koe, ka kite koe i te putanga "kaore i kitea te arowhai pūnaha kaore he take." Inaianei kua rite koe ki te haere. Whakahaerehia te tūmau me:

python manage.py runserver 0.0.0.0:8000

Na, whakatuwherahia he pūtirotiro tukutuku me te whakatere ki te http: // localhost: 8000. Kia kite koe i whakahokia mai te tuhinga i roto i nga tohu me nga kupu tuhi o te mahi httpuston i to tirohanga. He tauira noa tenei, engari ki te mea kua tae atu koe ki tenei, e mohio ana koe ki nga tikanga o te Linux, Bash, mahi a Django. Me keri te hohonu ki etahi whakatauira papatono, me te tirotiro i te mana o te akomanga Python ki te rokiroki korero. Na, ka tiimata matou ki te tiki i te hopu i te HTML me CSS i mua i te whakatakotoranga i to maatau papaanga, te ngawari me te haumaru ki te whakamahi i te JavaScript me te ako miihini.

Kei te rongoa nga akomanga i roto i te tauira.py o to taupānga. Ma te whakamahi i te nano, whakatika i te taupānga / tauira tauira me te taapiri i te akomanga hou. Kua tautuhia te akomanga me te whakamaarama o te akomanga ka paahitia he SuperClass e riro ana i tenei keehi, i tenei keehi .Molly. Ko te ingoa o te akomanga ka haere mai i muri o te whakamāramatanga o te akomanga, a i muri i te whakamaarama o te akomanga, i mua i te whakamahi i nga ahuatanga me nga tohu mahi e herea ana ki raro nei. Kei te hiahia ta maatau akomanga ki tetahi ID ka taea e taatau te whakamahi kia kore ai e taea te pupuri, a ka hiahia hoki ki tetahi waahanga tuhinga hei rokiroki i etahi korero. I muri mai ka taea e taatau te taapiri i te tohu tohu, nga konae (he korero pono, he teka ranei e taea ai te whakarite i te tauira ki te kaiwhakamahi, me etahi atu. Me whakakorehia e tatou te waehere i raro nei:

from django.db import models # Te kawemai e whakamahia ana hei whakatau i ta maatau akomanga me te huanga
class Post(models.Model): # Ko te whakamāramatanga o ta maatau akomanga ano
    id = models.AutoField(primary_key=True) # Ko te ID o ta maatau tauira, he matua i hangaia aunoa e tuku mai i te tauira, kia mau tonu, ka whai hua ki te taunekeneke me te tauira i te wa i hangaia ai.
    text = models.TextField(default='') # Ko te tohu i a maatau toa akomanga, i tenei keehi, ko etahi kuputuhi, ka tau ki te aho kore.

Katia ka penapena i te konae pera i mua i a maatau ki te whakaoti.

He maha atu nga waahanga me nga whiringa ka torotoro tatou i te wa e whakahou ana matou i tenei akomanga i te wa e tipu ana ta maatau taupānga, engari koinei nga mea e tika ana mo te hanga tuhinga. Heoi, kaore tenei tauira e mahi noa. Ka rite ki te korerohia i mua, ka hiahia tatou ki tetahi tirohanga ritenga me te tauira URL ritenga kia pai ai tenei mahi tauira, a ka hiahia ano matou ki tetahi puka me tetahi tauira. Me torotoro te tuatahi.

Hei tautuhi i tetahi puka, whakatika App / Form.py me te nano me te taapiri i nga raina e whai ake nei. Ka hiahia matou kia rua nga kawemai, ma te tauira hanga i hangaia e matou (Feed.models.post) Ka taea hoki e te pepa te mahi tuatahi e whakaatu ana i runga i nga korero i roto i te tono, tauira, ki te kore ranei, ka tirotirohia e matou i muri mai.

He tino whai hua nga puka tauira na te mea ka taea e raatau te hanga tauira, ka whakatika ano ranei tetahi tauira, na reira ka whakamahia e maatau mo enei mea. Me tautuhi i tetahi i roto i te ahua o raro.

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',)

Koinei nga kaupapa o te ahua me te ahua o te tauira. Ka taea te whakamahi i tenei pepa tauira ki te whakarereke, ki te whakatika ranei i tetahi pou, ka hurihia te tuhinga. Ka tirohia e matou tenei pepa ki te tirohanga i muri mai. Tuatahi, me hanga e tatou nga heke me te heke ki te papamahi na reira ka taea e taatau waehere te taunekeneke me te tauira ka rere ana. Ki te mahi i tenei, whakahaere i nga whakahau e whai ake nei:

python manage.py makemigrations
python manage.py migrate

Ma tenei ka iti ake te meneti ki te whakahaere, engari ka oti ana, ka taea e koe te uru atu ki te tauira i roto i nga tirohanga, o te Middleware, i hea atu ranei i te punaha. Kia mau tonu ma te whakaatu i te waahi ka kite tatou i ta maatau tauira. Whakatika Whanga / Tirotiro me te taapiri i te tohu e whai ake nei, kia rite ki te tuhi. Kaore e hiahia ana koe ki te taapiri i tetahi mea i muri i te tohu #, ko te waehere he korero e whakamahia ana hei tohu korero mo te waehere. Ka tiimata maatau ma te kawemai i ta maatau tauira ki nga tirohanga, me te taapiri atu ki tetahi horopaki e taea ai e tatou te whakaatu i te tauira hei raarangi whakaatu. Panuku, ka tapirihia e matou he tauira ka taea e tatou te whakaputa i te puka me te tauira me te paatene ki te hanga i tetahi mea hou e pa ana ki te tauira me te tuku ki te kaituku. Ka tangi tenei, na kia haere noa tatou i te taahiraa. I mua i te whakaoti i te tirohanga, me hanga e maatau te tauira ka tuku noa i te tauira me te whakarite kia kite maatau ma te hanga i tetahi pou hou i te anga. Anei me pehea e titiro ai taua tirohanga:

    posts = Post.objects.all() # Uiui nga pou katoa i roto i te papaainga i tenei wa

He ahua ngawari noa tenei ahua tae noa ki te tae ki raro. Hoatu, ko te uara i whakahokia mai e te mahi a te HTTP e rite ana ki te tauira o mua, ka whakaaehia nga pou o mua. Ko te tauira e haere ana hei tuhinga HTML me tetahi waahanga iti o te reo e kiia ana ko Jinja2, e tuku ana i nga korero a Python ki te HTML.

Hei tiimata ki te hanga tauira, kia rua nga waahanga hei whangai.

mkdir feed/templates
mkdir feed/templates/feed

Panuku, Whakatikahia he tauira i roto i te raarangi o runga, whangai / Tauira / whangai, me te taapiri i te waehere mo tenei tauira. Me titiro ki te tauira mo tenei tauira.

He tauira tino ngawari tenei. Ka tautuhi i te whakatuwhera me te kati i nga tohu HTML, he tohu mo te tuhinga me te taatai ​​i te taitara pakiwaitara, he tohu mo ia pou i te rarangi o nga pou hei rarangi. Koinei anake te mea hei whakaputa i nga pou, engari kaore ano i roto i te putunga putunga. Hangaia etahi me te anga. Ka taea e tatou te whakahaere i te anga me te whakahaere hiko.py

python manage.py shell

Na, kia kawemai to maatau tauira pou

from feed.models import Post

Panuku, ka hangaia e matou he pou ngawari me te aho ka puta i te anga. Ka taea e te aho tetahi mea, kia rite ki te roa o te tuhinga roa.

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

Ko te mutunga, ka hiahia matou ki te taapiri i tetahi tauira URL ki to tatou whangai. Na te mea ka whakamahia e to maatau taputapu whangai maha nga URL ka hiahia matou ki te pupuri i nga rahi o te konae, kia waihangahia he URLs.PY i roto i ta maatau kai whangai i tenei:

from django.urls import path
from . import views

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

Me whakatika ano hoki i te URLs.py i roto i te taupānga turanga, ko ta matou i whakatau ai ki te karanga, koinei te raarangi tuatahi i hangaia e matou. Whakatika App / App.py me te taapiri i nga mea e whai ake nei ki nga tauira URL

from django.urls import include # I te tihi
    # ... tohu o mua i konei

Na, ka rere matou i te tūmau me te kaipupuri hiko o te python, ka kite matou i te tauira i hangaia e matou na te mea kei a maatau te tauira, te tauira me nga taonga URL. Panuku, me whakauru i te puka i hangaia e matou ka tiimata ki te hanga i o maatau ake pou. Engari i mua i te tuhi i nga tohu nui, kia hangahia he pūrua ma te whakamahi i te tuhinga i tuhia e matou i mua, ka whakahoki mai i mua. Whakahaerehia tenei tuhinga i roto i te anga, tatari etahi wa poto, a ka tautokohia nga waehere katoa ki ta maatau putea GIT.

backup

Ko te whakatinana i te puka he ngawari noa. Ka kawemai i a maatau puka, taapirihia he kaiwhakarato tono panui ki te tirohanga, ka penapena i te pou i te papaa i mua i te tango i te taua tirohanga. Ka taea e taatau te whakamahi i te mahi whakatikatika kua kawe mai i a maatau, a ko tetahi atu mahi i karangahia kia huri ai te URL mo te tauira tirohanga. Ka uiui atu matou ki tenei me te aho 'whangai: i te mea ko te ingoa ingoa o te tauira whakauru kua whangai, ka kiia hoki ko te kai whangai.

    posts = Post.objects.all() # Uiui nga pou katoa i roto i te papaainga i tenei wa
    if request.method == 'POST': # Whakahaere i te tono panui
        form = PostForm(request.POST) # Waihangahia tetahi tauira o te puka me te penapena i nga raraunga ki reira
        if form.is_valid(): # Whakamana i te puka
            form.save() # Whakaorangia te mea hou
        return redirect(reverse('feed:feed')) # Anga atu ki te URL ano me te tono tono
        'form': PostForm(), # Kia mahara ki te tuku i te puka ki roto i te horopaki kia taea ai e tatou te tuku.

Na, me whakahoutia e matou te tauira hei putea mo te puka hou. Ka taea e taatau te mahi ma te whakamahi i te

Tag ki HTML me te tuku i te puka i te Tātauira HTML me te paatene tuku. Ka hiahia ano matou ki tetahi tohu CSRF, he tohu hei aukati i nga waahi o waho mai i te tuku ki te puka me te kore e uta tuatahi i tetahi whaarangi.

Kia wahia tenei. He akomanga puka hou, he tohu, he puka ake, me te paatene tuku. He maamaa noa, engari ka tirohia e matou, ka hiahia pea taatau ki te ahua pai ake. Ka mahi, ka taea e matou te tuku i nga pou hou me te puka ka tiakina mai i te papaa raraunga. He ruarua nga mea e haere ana i konei. Ka whakamahia e matou nga tohu HTML hei whakaatu ko te tuhinga HTML, ka whakamahia e matou he tohu mo te puka, me tetahi atu, ko tetahi atu, hei whakaputa i te puka. Kei a maatau ano hoki te putunga ki te tuku tuhinga ma te whakamahi i nga tohu poraka me tetahi tohu tauira. He mea tino nui nga tohu poraka na te mea ka taea e taatau te tautuhi he pehea te turanga o te tauira, me nga tohu tauira te turanga o te tuku taurangi ki roto i ta maatau waehere.

Inaianei me pai ake te ahua o ta maatau taupānga, na te mea inaianei he ahua tino taketake. Ka taea e taatau ma te whakamahi i tenei ma te whakamahi i te CSS, i te raarangi ranei, i roto i nga akomanga i herea ki ia mea i roto i te tuhinga. He tino pai a CSS na te mea e korero ana i nga mea katoa i te whaarangi me pehea te titiro, a ka tino pai te ahua. He ruarua nga whare pukapuka ka taea e tenei, engari ko taku taangata ka haere ki te bootstrap.

Ka taea te tango Bootstrap i to raatau paetukutuku,getbootsrap.com/. Ina koa, pato i te paatene ki te panui i nga tuhinga whakaurunga, me te kape i te waehere mai i te waahanga o te waahanga CDN. Ka hiahia koe i tenei waehere i te tihi o to tuhinga HTML, i te tohu e kiia ana ko te upoko. Ano hoki, me haere tonu tatou ki te hanga i tetahi tauira turanga kia kore ai e hiahiatia e matou enei hononga ki ia tauira.

Tuhia he raarangi hou e kiia ana he tauira me nga tauira MkDir, ka whakatika i nga tauira / Base.html.

Kia penei te ahua:

Kia mahara ki te kape i te CSS me te Javascript, te .css me nga .js.

Na, kia hoki tatou ki te anga o te anga ka rere i te whakahau tere. Kia maumahara, ki te hiahia koe ki te uru atu ki te taiao mariko, patohia te puna venv / bin / whakahohe. Ma tenei ka tukuna atu e koe te whakauru i nga kohinga Python i te rohe i roto i te huarahi e tuku ai a Django ki a raatau. Ki te hoatu i o maatau puka i hangaia e nga akomanga Bootstrap Django Bootstrap, ka whakamahia e matou he kete Python e kiia ana ko nga momo crispy. Ka taea e taatau te tango i tenei me te whakahau e whai ake nei

pip install django-crispy-forms

Ina whakauruhia tenei, tapiritia ki nga Tautuhinga.py

    # ... tohu o mua i konei

Na, hoki i roto i to maatau tauira kai, ka taea e taatau te tango i etahi mea. Me whakakore te timatanga me te mutunga o te tuhinga ka whakakapihia ki te kainga tupu mai i to maatau tauira turanga, ma te whakamahi me te whakamaarama poraka. Ano hoki, ka tapirihia e matou he kaiwhakauru tauira me te kawenga me te tātari tauira ki te puka. Ko te mea whakamutunga, me taapiri atu he akomanga bootstrap ki te paatene ki te puka kia pai ai te ahua o te paatene. Kia penei tenei:

Ataahua! Koina noa te waahanga o te waehere. Panuku, me whakamatau tatou me te whakarite kia kite tatou i nga mea katoa e pai ana, me tino mohio kei te mahi tika nga mea katoa. Whakahaerehia te kaituku kia rite ki nga tohutohu o mua me te whakarite kia pai te ahua me te mahi pai. He mahi nui! Kua rite koe ki te neke haere ki te taahiraa ake, ka taapirihia e matou te mahinga takiuru kaiwhakamahi ma te whakamahi i nga URL, nga puka, nga tirohanga me nga tauira. He mea nui te tauira turanga, a ka taea e taatau te whakarereke me te whakarereke i nga mea e hiahiatia ana, engari mo te mea ka uru atu to maatau ki te pupuri i to maatau.

Ki te mahi i tenei, me whakamahi maatau i te tauira kaiwhakamahi i hangaia ki Django. Ko te tauira kaiwhakamahi he tauira pātengi raraunga, penei i ta maatau pou, ka taea te tuku i tetahi kaiwhakamahi ki te paetukutuku. I te wa kei te heke mai, i mua i te tuku i te papaanga ki te Ipurangi, ka tukuna atu e matou tenei tauira me etahi atu tauira me te hanga i nga tikanga haumarutanga mo te takiuru. Ka tiimata maatau ma te whakamahi i etahi i hangaia i roto i nga puka takiuru e whakarato ana a Django. Tuatahi, kia waihangahia he taupānga hou ka whakamahia e matou ki te whakaputa i nga tauira me nga tirohanga mo te whaarangi takiuru taketake. Ka waihangahia ano e matou etahi atu taupānga hei tohu mo nga wero takiuru tonu kia pai ai te whakamahi i te taupānga, tae atu ki te kaikorero, e tata ana ki te whakawhitiwhiti korero, me te whakauru i nga waahanga maha.

Kua korero matou mo te tiimata i te taupānga. Mai i ta maatau whaiaronga, kei roto i te taiao mariko, paarua te mana whakahaere

python manage.py startapp users

Inaianei, me whai maatau te raarangi mo te taupānga hou. Me timata maatau ma te waihanga i tetahi tirohanga i roto i taua raarangi korero e pa ana ki te takiuru kaiwhakamahi. Kua hangaia e Django nga tirohanga mo te takiuru kaiwhakamahi, engari kaore e tika ana mo te maatau na te mea e hiahia ana matou i tetahi tirohanga ritenga, he pai ake te mahi me te whakamaarama.

I roto i tenei tirohanga, ka tiimata matou ma te tirotiro i tetahi tono panui, pass.Post ki te loginform i kawemai mai i Django, whakamanahia te pūkete kaiwhakamahi, me te takiuru i te kaiwhakamahi.

I roto i nga kaiwhakamahi / tirohanga, taapiri i te waehere e whai ake nei

        username = request.POST['username'] # Tikina te ingoa kaiwhakamahi me te kupuhipa mai i te tono panui
        password = request.POST['password'] # Whakamana i te kaiwhakamahi

Koinei anake te mea e hiahia ana koe mo te tirohanga takiuru matua. Na, kia waihangahia he puka mo te tirohanga ma te tuku i te tauira turanga. Ka tiimata maatau ma te hanga whaiaronga hou mo nga tauira i roto i te kōpaki kaiwhakamahi.

mkdir users/templates
mkdir users/templates/users

Na, me kaha ki te whakatika i nga kaiwhakamahi / tauira / kaiwhakamahi / takiuru.html. Ahakoa kei a maatau, ka hangaia e matou he tauira hei tuku i te kaiwhakamahi ki te haina hoki.

nano users/templates/users/login.html

Na, i roto i te tauira,

Koinei nga kaupapa o te tauira takiuru. He rite tonu ki etahi atu tauira i roto i te hanganga, engari he ahua rereke te ahua ka tukuna atu. Ka taea e taatau te kape i tenei waehere ki te hanga i tetahi tauira tino rite i kiia ko te Rehita.html, ka hurihia e matou te kupu me te whakamahi i tetahi puka hou ka hangaia e matou. Me mahi tuatahi te tauira. Whakatika Kaiwhakamahi / Tātauira / Kaiwhakamahi / Rehita.html me te taapiri i te waehere e whai ake nei:

Na, me hanga e tatou he puka mo to maatau rehitatanga o to maatau kaiwhakamahi me te porohita ki nga tirohanga i mua i te whakapai ake i o maatau takiuru ki te tauira. Ka waiho maatau tenei pepa hei tiimata, engari whakauru i etahi atu korero me nga waahanga haumaru penei i nga whakaaetanga me te CAPTCHA a meake nei. Whakatika i nga puka me nga kaiwhakamahi Nano / Form.py, me te taapiri i te tohu e whai ake nei.

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']

No reira kei a maatau tetahi atu ahua i konei, e mahi tika ana. He puka rēhita kaiwhakamahi me te ingoa kaiwhakamahi, imeera me te kupuhipa, me te whakauru i te mara Kupuhipa. Kia mahara kaore tenei puka e tuku i nga puka puka.form, he ahua tauira tenei ko te tikanga he meta. Kotahi te mara e tautuhia ana, ka tautuhi ano hoki te meta o te akomanga te tauira e rite ana ki te toenga o nga korero ka tuhia ki te puka. Ko te nuinga o tenei kei roto i te hanga o Django i te waahanga o te tari, na reira ka whakamahia e matou hei kaupapa mo te akomanga (i tukuna i roto i te whakapapa).

Panuku, ka tirohia e maatau te tirohanga ki te rēhita i tetahi kaiwhakamahi, inaianei kei a maatau he tauira me tetahi tauira. He tauira tenei, penei i te mea i roto i te tirohanga hou. Whakatika nga kaiwhakamahi / tirohanga ki te taapiri i te waehere e whai ake nei:

# ... kawemai

Koinei anake te mea e tika ana kia whiwhi i tetahi kaiwhakamahi kua rehitatia, engari me nui ake nga korero. Kei te hiahia matou ki te mohio ki te wa kua rehitatia te kaiwhakamahi, he aha te waa i runga i te papaanga, penei i te korero mo te tauira whangai, me etahi atu korero mo te kaiwhakamahi kaiwhakamahi me nga pou tohu ki ia kaiwhakamahi. Hei mahi i tera, ka whakahou i nga tauira.py i nga taupānga e rua. Me timata ma te whakatika i te tauira whangai. Kia penei te ahua o tenei:

from django.db import models # ... kawemai
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='posts') # Tāpirihia i roto i tenei raina

Kia whai whakaaro ki te raina tuarua i tapiritia ki te konae. He mea ke tenei, ka tohu i ia pou ki te kaiwhakamahi kotahi ki ia pou, na reira ka taea e taatau te penapena i nga pou-kaiwhakamahi kaore he pou e taea te whakarite me te kore korero. Ka tautuhia e matou tenei kaupapa ke me te akomanga e tohu ana, ko te muku i nga pou ka taea te tango i te kaiwhakamahi ki te whakamahi i nga tuhinga. Ko tenei ingoa e pa ana, kaore i rite ki a Post.Auror, te kaituhi o te pou, ka whakawhiwhia ki a matou te kaiwhakamahi i tuku i te pou ake. Ka taea e matou inaianei te tiki i nga pou i hangaia e te kaiwhakamahi i hangaia e te kaiwhakamahi.posts.all (), me te kaituhi.All ranei ().

Na, kia kaha ake ta tatou takiuru. Ka taea e matou te hanga i to maatau papaa iti rawa ki te whakakao noa i te utu noa i te maha o nga waa ka whakaaehia e matou he takiuru ki te papanga, he ngawari rawa tenei. Me timata ano te rokiroki i etahi korero mo ia kaiwhakamahi i mua i te wa e haere tonu ana taatau ki te whakawhanake i ta maatau taupānga. Te whakatika i nga kaiwhakamahi / Tauira, taapiri i te tohu e whai ake nei.

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='')

Kia mahara ko tenei tauira he rite tonu ki te tauira pou. Kei a maatau tetahi atu kawemai, ka taea e tatou te whakanoho i nga taunoa ki nga mara o te ra, a he tohu ano hoki ta matou ki te pou. Ma te whakamahi i enei waahanga katoa ka awhina i a maatau ki te whakamahi i te papanga me te mohio ki tana whakamahinga, me nga mara kuputuhi kia tuku korero mo ia kaiwhakamahi, kaituhi ranei, i te paetukutuku. Ko te Ontotoonefield ko te mea iti noa iho, he rite tonu te ahua o te maakete engari me te kotahi noa iho tauira o te tauira whai muri. Ma tenei ara, he kotahi noa te korero a te kaiwhakamahi, ahakoa he maha nga pou.

Na, kia whakapai ake i to maatau takiuru me te rēhita i nga tirohanga ki te korero mo te korero. Tuatahi, whakatika nga kaiwhakamahi / tirohanga me te aro ki te tirohanga rēhita:

# ... kawemai
            Profile.objects.create(user=user) # Kia mahara ki te taapiri i tenei raina, ki te hanga tuhinga mo te kaiwhakamahi

Ka hangaia noa e tenei tetahi korero mo te kaiwhakamahi, kaore i te whakakii i tetahi o nga korero. Na, kei te hiahia matou kia uru atu te kaute kaiwhakamahi ki te nuinga o te waa, kaore ranei e taea te whakamatau i nga kupu huna, na me whakahou te tirohanga takiuru.

# ... kawemai
        if user and user.profile.can_login < timezone.now(): # Kia mahara ka tirohia e matou mehemea ka taea e te kaiwhakamahi te takiuru
        else: # Mena kaore i angitu te takiuru,
            user = User.objects.filter(username=username).first() # Koinei te waahanga e whakahou ana i nga korero a nga kaiwhakamahi
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Na e kore e taea e ratou te takiuru ano mo etahi hēkona

Koinei te kaupapa matua o te haumarutanga. Kia mahara kaore e whakaraeraehia te papanga ki tetahi noa e ngana ana i nga huinga kupuhipa ka taea te whakakotahi, ahakoa ko etahi o ratou i te wa ano. E kore tenei e raru ki te kaiwhakamahi noa e mohio ana ki o raatau paanui me nga poro rakau noa i runga i nga taputapu iti, engari ka pupuri i nga robots kotiro maha mai i te taupānga. Kia mahara kua tapiritia e matou he taurangi me te taurangi, ka taea e te waa te waa i nga wa o mua, me te whakahou i te takiuru kaore i angitu te whakamahi i te ingoa ingoa. Ma tenei ara, kaore e taea e te kaiwhakamahi kino te whakapae i tetahi kupuhipa i nga waahi katoa e tata ana. Ko te maha o nga hēkona i roto i te Raarangi o te Raarangi.Timedelta () Ka taea hoki te whakahoutia ano, a ka nui ake te waahi o te paetukutuku, engari he iti ake te whakamahi me etahi atu hēkona. Ka tūtohu ahau 15 kia tiimata me te.

Kia maumahara, ka hangaia e matou he tuhinga kape hei whakaora i a maatau mahi, na me haere tonu taatau ki te whakahoki i nga mea kua mate tatou i nga mea katoa. Whakahaerehia te whakahau:

sudo backup

Ano ano, ka ora tenei i a koe mahi i tenei wa. Ka tūtohu ahau ki te whakahaere i nga kapenga maha hei whakaora i a koe mahi, a ka hiahia pea koe ki te whakahaere aunoa i tetahi mahi pūrua. Ka taea e koe te mahi i tenei ma te whakamahi i te whaipainga Unix e kiia ana ko Cron. Hei whakahohe i tenei taputapu, whakahaere i te whakahau e whai ake nei ka uru ki to kupuhipa:

sudo crontab -e

Mena kaore ano kia tohua te whiringa 1 mo Nano, te kaiwhakamahara tuhinga me mohio koe ki te taha o te konae ma te whakamahi i nga pere pere. Tāpirihia te raina e whai ake nei:

0 * * * * sudo backup

Ka whakamahia e Cron te meneti meneti, haora, te ra, marama, ra, te ra, te ra, te ra e tohu ana i te kupu. Ma te whakamahi i te 0 mo te meneti me te * mo te toenga o nga whiringa, ka taea e taatau te whakahaere i tetahi whakahau i te meneti tuatahi o ia haora i te tiimata o te meneti. Ma tenei ka taea e taatau te whakahoki i te waehere aunoa. Katoa nga mahi a Cron i te wa i whakahaerehia ai a Sudo Run hei pakiaka, na reira kaore matou e hiahia ki te pato i te kupuhipa ia haora.

Kia ngawari ake te whakahoki i to maatau waehere me te kore e whakamahi i tetahi kupuhipa, kia whakakorehia te kupuhipa mo to maatau whakahaunga. Ka mahia e maatau ma te whakahaere i te whakahau e whai ake nei me te whakauru i tetahi kupuhipa:

sudo visudo

Na, kia panuihia tatou ki raro o te konae me te taapiri i tetahi atu raina:

ALL ALL=NOPASSWD: /bin/backup

Ma tenei ka taea e taatau te whakahaere i te whakahau "Ka rite ki tetahi kaiwhakamahi, kaore he kupuhipa. Ko te whakatakotoranga mo tenei he ngawari noa, he rite tonu te raina me te "katoa = NOPASSWD:

Na, kia tiimata te mahi me te imeera. He mea nui te imeera mo nga paetukutuku, na te mea he pai te pupuri i tetahi paetukutuku, manatoko nga tangata he tangata pono, me nga taonga maakete, ratonga ranei ki nga kaihoko. He maha nga taangata e tirotirohia ana e te Ipurangi i ia ra, ka whiwhi i nga momo hokohoko hokohoko i te wa e taea ana e koe te whakamahi i te kaupapa Django.

Tuatahi, ka taea e koe te utu mo tetahi ratonga imeera ka taea e koe te tuku imeera mai i to rohe me te hiahia waehere iti. He maha nga ratonga e tuku ana i tenei, penei i te mahi a Google Walpace, a SetsinBlue, Indgun, me etahi atu.

Ki te kore, kei te pai koe ki te hanga i to ratonga ake imeera i roto i to kaitoro mai i te wa o te waa. Ka tūtohu ahau ki tenei whiringa, ahakoa he nui ake te waehere ka hiahia pea koe ki te manaaki motuhake. Kaore e taea e koe te tiimata i te kaituku mēra mai i to rorohiko kaainga, na, kia haere tonu me te tirotiro i te whirihoranga me te waehere ki te tuku i tetahi kaituku i roto i te kapua.

Tuatahi, Whakatika Setrings.py me te whakahau e whai ake nei:

nano app/settings.py

Te waahi ko te taupānga te ingoa o te taupānga i hangaia e koe me StartApp.

Tāpirihia nga raina e whai ake nei:

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)

Kia mahara ki te whakarereke i enei ka rite koe ki te tuku i to taupānga, ka tirohia ano e maatau i muri mai. The EMAIL_ADDRESS setting should be the email you would like to send from, and the password (EMAIL_HOST_PASSWORD) should be set to the password you generate for the server. Ka utaina e ahau te kupuhipa i roto i te konae whirihora kia mau tonu i te waehere ma te whakamahi i te arorau e whai ake nei, i runga ake i enei raina i roto i nga waahanga

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

Na, kua whakatauhia e ahau he konae JSon me te whirihoranga i /etc/config.json e whakamahi ana i te nano penei.

Hei Whakatika i te Kōnae:

sudo nano /etc/config.json

Tāpirihia nga raina e whai ake nei:

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

Ka haere tonu matou ki te whakatika i te konae whiri me te taapiri i nga kupuhipa me nga kiki ka whakamahia e matou i te taupānga. Inaianei, kia tirohia e tatou me pehea te tuku imeera ma te whakamahi i te Python. Tuatahi, me hanga he tauira mo te imeera whakamana ka taea e taatau ki a maatau kaiwhakamahi, ka tukuna ki roto i te raarangi tohu kaiwhakamahi. Ka tuhia tenei tauira ki HTML.

nano users/templates/users/verification_email.html

He maamaa tenei imeera. He horopaki o te kaiwhakamahi, te URL turanga mo te papanga, me tetahi ID kaiwhakamahi me te tohu e whakamahia ana hei whakamana i te imeera o te kaiwhakamahi. Kia mahara ki te tautuhi i te URL turanga i roto i te Tautuhinga.py i mua i a maatau e tuhi ai i etahi tohu Python hei whakaatu i te tauira. Haere i mua me te taapiri i nga raina e whai ake nei ki te App / Tautuhinga.py, i te timatanga.

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

BASE_URL = PROTOCOL + '://' + DOMAIN

Ka mutu, ka rite to papaanga mo te ipurangi ka tohatohahia e koe, ka hiahia koe ki te tautuhi i to rohe i te ingoa rohe e hoko ana koe hei tohu mo te papaanga. Koinei te ingoa ka pato koe i te NAVBAR kia uru ki to papaanga. Inaianei, ka taea e koe te waiho i te rohe ki te whakamahi ranei i tetahi kaipupuri whenua. Ka hiahia hoki koe ki te huri i te papanga_name ki tetahi ingoa e hiahia ana koe ki te hoatu i to papaanga, o to kowhiringa.

I mua i to tuku imeera, me hanga e maatau te tohu tohu kia taea ai e matou he tohu whakahohenga kaute kaore e pau. Ka taea e taatau te mahi ma te hanga me te kawemai i tetahi tohu whakahohenga kaute e rite ana ki enei e whai ake nei. Whakatika i te konae:

nano users/tokens.py

Tāpirihia te tohu e whai ake nei:

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()

Ko tenei kohinga tohu taketake e whakaputa ana i te tohu ka taea e taatau te tuku i te kaiwhakamahi ki te URL me te whakamahi i te kaiwhakamahi ki te manatoko i a raatau imeera me te whakahohe i o raatau putea.

Panuku, kia kite koe me pehea te tuku i tetahi imeera. Ma te whakamahi i te nano, whakatika nga kaiwhakamahi / email.py.

nano users/email.py

Ko te tuku i te imeera HTML e penei ana:

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)

He maamaa tenei. Ka kawemai matou i nga mahi e tika ana kia tukuna e matou te imeera, me o maatau tautuhinga, a ka tautuhia e matou te imeera me te tuku i tetahi mahi ma te whakamahi i tetahi mahi. Ka kite koe kaore ano kia tautuhia e matou te mahi ki te tuku i te mera, tirohia_html_email, na, me tuhi tenei i raro i te waehere / Email.py

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()

He maamaa noa atu tenei, kaore ano hoki matou e rite ki te whakahaere i enei tohu katoa. Panui Kei te tautuhi matou i te koretake, ko te hono ka taea e te kaiwhakamahi te whakamahi ki te tango i o maatau imeera. He mea nui tenei, na te mea ka hiahia nga kaiwhakamahi ki te whakaputa i o maatau imeera mena kaore e hiahia ana kia kite ratou i a raatau, i nga wa katoa. Ka tapiritia ano e matou he tuhinga taapiri ki ta maatau korero, ko te karere HTML kua unuhia nga tohu HTML. I te mutunga, ka tirohia e maatau mena ka tukuna mai te imeera, a mena kaore, ka tohu matou i te kōtaha a te kaiwhakamahi kaore e whai mana ta raatau imeera.

Kia hoki whakamuri ki nga tauira kaiwhakamahi kia taea ai e tatou te mahi i tenei mahi katoa. Me tautuhi e maatau tetahi mahi hei whakaputa hononga ki te wetewete, me te tautuhi i tetahi mara Boolean hei tohu kaore he mana o te imeera o te kaiwhakamahi.

Tuatahi, tapirihia nga kawemai e whai ake nei ki te tihi o nga kaiwhakamahi / tauira.py

nano users/models.py
# ...

Panuku, kia taapiri atu nga mahi ki te tauira kaiwhakamahi kia tirohia te tohu e whakamahia ana hei whakahohe i te mara hei whakaora mena he angitu te kaiwhakamahi. I roto i nga kaiwhakamahi / Tauira ano ano, taapirihia te tohu e whai ake nei ki te mutunga o te tauira (waehere tohu)

# ...
            TimestampSigner().unsign(key, max_age=60 * 60 * 24 * 30) # He tika mo te 30 ra

He maamaa tenei, ka whakamahia e matou tetahi tohu tohu, he mea hanga ano he tohu ka mutu i muri i tetahi waa, ka whakamahia ano hoki e matou tetahi mahi hei tirotiro mena ka whai mana. E rua nga waahanga o taatau tohu, kotahi te manatoko i te imeera, me te kotahi mo te hono koreutu.

Inaianei kei a maatau enei mahi, ko te whakamutunga o nga mahi ka hiahia matou ki te mahi i roto i nga whakaaro. I roto i nga kaiwhakamahi / tirohanga.py, me taapiri i nga tirohanga hei whakamana i te wahitau imeera, me te whakauru.

nano users/views.py

Tuatahi, taapirihia nga kawemai e whai ake nei. I whiua e ahau i roto i etahi taapiri kia kore ai e taea e maatau te kawe mai i nga taonga ake i muri mai.

from .email import send_verification_email # Kia mahara ki te kawemai i te mahinga tuku whakamana

Kei a koe pea etahi o enei kawemai, engari kaore e whara ki te whakahoki i a raatau. Kei te hiahia koe ki te kawemai i te mahi tuku mai i te imeera, me te kaute_activation_token mai i nga kaiwhakamahi.Tokens, i roto i etahi atu kawemai.

Na, i te raro o te konae, whakauruhia te tohu e whai ake nei:

        # Tangohia ratou
    # Mena kaore i te tirotirohia ki te whaarangi takiuru
# Tukuna te kaituku (tono, kaiwhakamahi)

He maha nga waehere. Kia pakaru. Ko te mahinga tuatahi, ma, ma, ngawari hoki, kaore i tohua te kaiwhakamahi mai i te raarangi mēra. Ko te mahinga tuarua e whakahohe ana i a raatau imeera, a ka kite koe i tapiritia e ahau tetahi mahi i korero, tuku mai i te waa. Kei te mihi koe ki te whakamahi i tetahi tauira tauira me te tautuhi mahi hei tuku i tetahi imeera maioha, kaore ano ahau. Ko te mahi whakamutunga ka maka e ahau he mea nui, na te mea ka pau nga imeera whakahohenga. Na reira, me kaha taatau ki te whakahoki i te imeera whakahohenga i etahi o te waa. Ka taea e taatau te whakamahi i tetahi puka taketake mo tenei, ka karanga i te mahi hei tuku i te imeera whakamana. I mua i ta maatau, me whakarite kia tukuna mai i te waahi tuatahi, ma te taapiri i tetahi karanga mahi ki te tirohanga rēhita. Tāpirihia tenei raina i mua i te whakatikatika i te tirohanga rehita, Def Rehita, i roto i nga kaiwhakamahi / Views.py.

nano users/views.py
# ... (I muri mai) DEF rehita (tono):
# ... (i mua) whakatika (

Kaore e tika ana kia taapirihia nga raina tuatahi me te whakamutunga i roto i taua waehere waehere, kia mahara kia tukuna te tirohanga rehita ki te imeera. Kia penei te ahua:

# ... kawemai
            send_verification_email(user) # Kia mahara ki te taapiri i tenei raina!

Na, me taapiri e maatau he puka hei whakahoki i te imeera whakahohenga. I nga kaiwhakamahi / Form.py, taapiri i te puka e whai ake nei:

# ... (Kawemai)

Ka hiahia hoki matou ki tetahi tauira e rite ana ki tenei puka whakahoutanga imeera. Kia taapirihia tenei tauira i roto i. Whakatikaina te konae:

nano users/templates/users/resend_activation.html

Panuku, taapirihia te tohu e whai ake nei ki te konae.

Whew, he nui! Na, ka tukuna e matou te waehere ki to maatau kaituku, ka taea e taatau te tuku i nga imeera HTML me te whakahohe i nga kaute kaiwhakamahi me te paato i te imeera. Ka hiahia hoki matou ki te tuku i tetahi imeera maioha, na kia tirohia e pehea te mahi i tera. Hoki i roto i nga kaiwhakamahi / email.py, tapirihia te tohu e whai ake nei:

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)

Ano hoki, ka hiahia matou ki tetahi tauira hei whakaatu i enei korero katoa. I taku paetukutuku, ko te tauira te ahua o raro, engari e maioha ana koe ki te hōputu i te mea e pai ana koe.

Kia mahara kaore matou i te kati i te tinana, i te HTML ranei, na te mea ka taapirihia e matou enei i te wa e tapiritia ana e matou te hononga HTML. He mea nui enei, engari kaore matou e hiahia ki te whakatau i a raatau e rua.

Na he aha te mea e whai ake? Kua tae mai a maatau. Ma te tino, me rite taatau ki te tuku i te papaanga ki te tūmau. Ka taea e taatau te taapiri i te kaitakaro @LOGin_Required me te whakarite i o maatau tirohanga, tuku i nga imeera kaiwhakamahi, me nga korero mo te kaute, ko te putake o te paetukutuku me mahi e whai kiko ana. Ka taapirihia e maatau etahi waahanga whai hua, ka hanga i tetahi turanga mo te tango i to maatau waehere ki tetahi kaituku mamao, te whakarite i tetahi kaituku mera, me nga tātari kia mau ai to maatau papaanga.

Ka hiahia hoki maatau ki te tirotiro i te kupuhipa, na kia taapiri i taua mea tino tere. Ko te hanga o Django i te tirohanga o te kupuhipa ka pakaru i etahi mahi, engari ka titiro maatau ki te tuhi i o maatau ake tirohanga, tauira, nga tauira URL. Anei te ahua o te tirohanga, i roto i nga kaiwhakamahi / tirohanga

# ... kawemai

Ka hangaia tenei pepa ki Django, engari me maatau te tauira hei whakaū i te tautuhi kupuhipa, kaiwhakamahi / tauira / kaiwhakamahi / kupuhipa.html.html.html.html.html

Kei a maatau ano hoki te tauira hei tuku i tetahi kupuhipa tautuhi kupuhipa, me tetahi puka ngawari, i roto i nga kaiwhakamahi / tauira / Kaiwhakamahi / Kupuhipa_HTML

Ko te tauira mo te imeera ake he maamaa, he mea tino nui te konae HTML ki te tautuhi i te kupuhipa, i roto i nga kaiwhakamahi / tauira / kupuhipa / kupuhipa_remail_remail.html. Ka whakamaori aunoa a Django i tenei konae.

Me nui atu ano etahi tauira. Ko te tuatahi ko te whakaū kua tukuna mai te imeera. Ko nga tirohanga mo enei kua puta i Django, na me korero noa tatou ki a raatau i te URLs.py. Kei roto i tenei tauira i nga kaiwhakamahi / tauira / Kaiwhakamahi / Kupuhipa_Reset_Done.html

Ko te whakamutunga, ki te whakaū i te otinga o te kupuhipa kua oti, kaiwhakamahi / tauira / kaiwhakamahi / kupuhipa_reset_complete.html

Na, me maatau nga tauira URL mo enei tirohanga. I nga kaiwhakamahi / URLs.py, tapirihia nga tauira URL e whai ake nei:

    # ... URL o mua

E wha nga tauira, he nui! Engari inaianei ka taea e taatau te tautuhi i te kupuhipa a te kaiwhakamahi ki tetahi wa e tika ana kia maatau, mai i te Tirotiro Tukutuku.

Kei te mohio au he nui tenei waehere. Mena he iti noa iho te ahua o to upoko, he pai tena. Ka whakapai ake koe, ka pai to maarama, ka kaha ake koe ki te tohu i te waehere. Mena kua tino ngaro koe, ka tūtohu ahau kia hoki mai ano ki tenei punaha i muri mai i muri i te mahi ki te ako i a koe ano ki te whakauru i te akoranga waehere ipurangi. Ko te tikanga ka tiimata te tiimata, ka arahina koe e koe i nga mea katoa e hiahia ana koe kia angitu koe ki te hoki mai ki tenei kaupapa. Mena kei te rite koe kei te rite koe ki te haere tonu, panuihia, ka kapi matou i to waehere mamao, me te whakarite i te kaupapa hou me nga ture hou.

Ko te mea whakamutunga e tika ana kia mahia i mua i te tuku ki tetahi kaituku mamao te mea he iti ake to maatau papaanga. Ka kite koe ko te tirohanga takiuru noa tetahi ingoa ingoa me te kupuhipa, kaore he whakamotuhēhēnga take nui, kotahi ranei te waehere waa. He whakatika ngawari tenei, me te taua waehere, ka taea e taatau te tuku i o maatau papa kuputuhi me te whakautu ano ki nga karere kuputuhi ka tukuna ki te tūmau. Hei tiimata, ka hoki matou ki roto i nga tauira kaiwhakamahi me te taapiri i tetahi waahanga timestamp hei tohu mo ia takiuru. Ka tapiritia ano e matou he tautuhi ahurei, hurihuri ki te tauira kaiwhakamahi ka whakamahia hei taapiri i te haumarutanga ki to maatau takiuru. Te Whakatika i nga Tauira Kaiwhakamahi, Kaiwhakamahi / Tauira / Tauira, taapirihia te tohu e whai ake nei:

# Kia mahara ki te kawemai i te UUID, ko te kaihaka a Tistamp me te URL Generator (Whakahoki)
    # Tāpirihia tenei tohu i konei
    # Me te taapiri i tenei mahi
            TimestampSigner().unsign(key, max_age=60 * settings.AUTH_VALID_MINUTES) # Tika mo te 3 meneti

Kia mahara ki nga ahua o to kaiwhakamahi / tauira (ahua rite ki tenei, haunga nga korero (waehere i runga i nga raina me te #). Te pakaru i tenei, he ngawari. He maha nga kawemai i a maatau, he tohu tohu hei whakamahi i tetahi waehere haumaru ka taea te whakarite kia whai mana, kaore i pakeke ake i te maha o nga hēkona. Ka whakamahia hoki e matou he UUID, he tohu motuhake e tohu ana i to maatau kaiwhakamahi ki te hainatanga o te tohu, a i te url i tukuna ai te tohu ki te kaiwhakamahi. Ka whakamahia e maatau tenei tuhinga taketake hei hanga i tetahi tirohanga whakamotuhēhanga e rua. I mua i a maatau mahi, kia whakahaerehia nga heke, kia whakahoutia o maatau tauira kaiwhakamahi. I roto i te whaiaronga me te kaiwhakahaere.py, whakahaere nga whakahau e whai ake nei hei whakarite me te whakaoti i nga heke.

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

He mea nui tenei na te mea i nga wa katoa ka whakarerekehia e tatou nga tauira, me hanga e tatou nga tepu me te whakahou i te papaa me te whakahou i nga taunoa i mua i te whakamahi i nga tauira.

Panuku, kia whakatikahia ta maatau tirohanga takiuru kia anga atu ki te tirohanga motuhake tuarua. I roto i nga kaiwhakamahi / tirohanga, tango i te mahi takiuru me te whakatika ano ki te URL i hangaia e matou i roto i nga tauira kaiwhakamahi.

# ... kawemai
        if user and user.profile.can_login < timezone.now(): # Kia mahara ka tirohia e matou mehemea ka taea e te kaiwhakamahi te takiuru
            # Tangohia te mahi a Abet_login i konei
                return redirect(user.profile.create_auth_url()) # Kia mahara ka hoki matou ki tetahi URL hou i konei
            else: # Mena kaore i te whakamahi te kaiwhakamahi i te whakamotuhēhēnga maha-take, tuhia noa ki roto.
        else: # Mena kaore i angitu te takiuru,
            user = User.objects.filter(username=username).first() # Koinei te waahanga e whakahou ana i nga korero a nga kaiwhakamahi
                profile.can_login = timezone.now() + datetime.timedelta(seconds=15) # Na e kore e taea e ratou te takiuru ano mo etahi hēkona

Na he tino ngawari tenei, kei a maatau inaianei te huarahi ki te whakahoki ano ki te tirohanga motuhake e rua i te wa e hanga ana e matou. Kei a maatau ano hoki te utu i te keehi kaore ano kia tapiritia e te kaiwhakamahi tetahi nama waea. Ka tapiritia e matou he tirohanga taketake ki te taapiri i te nama waea ka roa ka takiuru me te tuku korero.

Tuatahi, me whai huarahi ngawari ki te tuku karere kuputuhi mai i ta maatau waehere. Ki te mahi i tenei, ka taea e taatau te whiriwhiri mai i te apis, engari ko te mea ngawari ki taku whakaaro he twilio. He utu pai hoki ta ratou mo nga kaupapa iti ake, me nga utu utu nui. Waihangahia he kaute i runga i Twilio.com, whakakiia etahi korero mo to kaupapa, hoko mai i te nama waea, ka kape i o tohu API ki o Tautuhinga.py. Na, whakauruhia tenei waehere i raro i tetahi konae hou, kaiwhakamahi / sms.py.

nano users/sms.py
# Kawemai i nga paanui katoa e tika ana
# Ka tukuna e tenei waehere te tuhinga me te twilio
# He mahi awhina hei tiki i te nama me te maha o nga nama
# Tukuna nga tuhinga hei whakamana i te kaiwhakamahi
# Tukuna he kaiwhakamahi ki tetahi tuhinga me tenei mahi
# Whakamana i te waehere me tenei mahi
# Whakamana i te waa

Kia mohio ki te whakarereke i o tautuhinga tika, taapiri i enei raina me o tohu:

# Kia mahara ki te kape i enei mai i to papatohu Twilio
AUTH_VALID_MINUTES = 3 # Ko te maha o nga meneti ka kaha te whaarangi TFA

Tuatahi, ka hiahia matou ki nga puka mo a maatau tirohanga motuhake e rua. Te Whakatika i nga Kaiwhakamahi / Form.py, taapirihia te tohu e whai ake nei.

# ... kawemai
# He puka mo te whakauru i a maatau nama waea
# He puka mo te whakamana

Panuku, kia waihangahia nga tirohanga ki nga kaiwhakamahi / tirohanga

# ... kawemai

Ka hiahia hoki matou ki nga tauira mo enei tirohanga e rua. Kia taapiri i te Tātauira MFA.

nano users/templates/users/mfa.html

Tāpirihia tenei waehere HTML ki te tauira

He tino whakamaarama tenei. Ko te puka ka tukuna he waehere, he waehere kau ranei, ka kite koe i te tirohanga ka tukuna e matou te waehere mena ka whiwhi tatou i tetahi waehere kau. Katahi ka rua noa nga pihikete, me tenei huarahi ka taea e taatau te tuku i te waehere me te paatene ranei. Panuku, ka taapirihia he puka ngawari hei taapiri i te nama waea.

nano users/templates/users/mfa_onboarding.html

Tāpirihia te HTML e whai ake nei:

He maamaa noa tenei pepa, ka waiho noa i te puka nama waea i hangaia e matou, ka taea te whakamahi i te nama waea.

He tino pai tenei ahua! I te mea e tika ana kia whakatauhia nga mea katoa, me tuku atu e maatau nga karere, me te takiuru i te kaiwhakamahi ki te taapiri i a raatau waea i te wa e taapiri ana i nga tauira URL. Ko te mea whakamutunga e tika ana kia tautuhia e matou he tirohanga korero kia taea ai e te kaiwhakamahi te whakarereke i a raatau nama waea kaore e hiahia ana ki te taapiri i nga tuhinga "Whakamutua".

Kia taapirihia he tirohanga ki nga kaiwhakamahi / tirohanga. Ma tenei tirohanga ka whakahou i te Bio a te kaiwhakamahi, Email, Ingoa, me te nama waea, me te tuku i a maatau ki te Whakapono i te Whakamotu Motuhake Multi. Tuatahi, ka hiahia matou kia rua ano nga puka i roto i nga kaiwhakamahi / forms.py

# ... kawemai

Panuku, ka taea e tatou te tiro ki te whakamahi i enei momo e rua. Whakatika nga kaiwhakamahi / tirohanga me te taapiri i te tirohanga.

# Tāpirihia enei kawemai

Ka hiahia hoki matou ki te tauira mo tenei tirohanga.

nano users/templates/users/profile.html

Ka kite koe he ahua ngawari tenei, engari kei a ia ano etahi Javascript i roto i te waa e tukuna ana nga korero o te puka kia whakahoutia. He whai hua tenei ki te whai, na reira ka taea e koe te whakatika me te kore e pa ki te tuku i nga wa katoa.

Panuku, me tono nga URL e tohu ana i enei tirohanga katoa i roto i nga waahanga URL e pa ana ki nga kaiwhakamahi URL. Whakatika Kaiwhakamahi / Ulls.py me te taapiri i tenei Waehere:

# ... Waehere o mua, kawemai
# ... Nga tauira URL i uru mai tatou, whakauruhia nga raina e toru e whai ake nei

Inaianei he wa pai ki te whakamatautau i ta maatau kaupapa. Engari ko te tuatahi, kia rere tatou i tetahi atu pūrua.

backup

Ka whakahaere i te tūmau. I mua i to maatau tuku ki te kaituku Linux, he pai te whakaaro kia taea ai e rua nga whakaotingatanga e rua mo te kaute. Ka mahia e maatau tenei mahi ki to maatau URL kōtaha, / Kaiwhakamahi / Kaihono / me te tirotiro i te pouaka kia taea ai te whakamana i muri i to maatau nama waea, ka tuku i te puka.

python manage.py runserver localhost:8000

Tirohia te whārangi tukutuku ma te haere ki to paetukutuku paetukutuku, kei te whakamahi ahau i te Google Chrome i roto i tenei tauira, me te whakauru i te URL HTTPS: // localhost: 8000 / pūkete / kōtaha / kōtaha / kōtaha / kōtaha

Ka taea e koe te takiuru mena e tika ana me te taea te whakamana i te kaupapa e rua.

Kei te hiahia tenei kaupapa ki te tūmau ki te rere kia taea ai te tuku mēra. Engari ko te mea tuatahi, me whai huarahi kia kite i nga hapa. Ka kite koe i te mea ka whakahaerehia e koe te tūmau i roto i te aratau debug, me nga Tautuhinga WhakahoahoaWhakaarohia me te Tika, Ka whakaatu aunoa te kaituku. Hei whakaatu i nga hapa me te kore e whakamahi i te aratau debug, kaore he haumaru i runga i te tūmau whakatipu, me taapiri e maatau. Ko nga hapa tino nui me kaha ki te hapai i:

Hapa 500 - he raru ki ta maatau waehere Hapa 404 - He whaarangi kaore i kitea (URL pakaru) Hapa 403 - he tohu whakaae kua whakakahoretia

Me taapiri atu he kaupapa hou hei hapai i enei he, ka kiia he he.

python manage.py startapp errors

Tāpirihia tenei ki nga Tautuhi i mua, i roto i te tautuhinga whakauru, ka tiimata ki te taapiri i etahi tirohanga i te App / URLS.PY, kei hea te ingoa o to kaupapa Django.

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

Koinei anake te mea e hiahia ana matou ki te taha o nga tirohanga hapa, tauira me tetahi waahanga iti o te Middleware. Me tautuhi te hunga penei:

# Waihangahia o whakaaro i konei.

Panuku, me tautuhi te Middleware ki te hapai i enei hapa. Ka mahia e maatau ma te tuatahi ki te taapiri i te Middleware_Clales i roto i te Tautuhinga.py, me te ingoa o to tatou Middyware.

    # ... Tuhinga o mua

Panuku, kia taapirihia te awangawanga.

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.')

Ka tapiritia e matou he mahi ki te tiki i nga waahanga o naianei ma te whakamahi i te rohe tuitui, hei awhina i a maatau ki te whakauru i nga hapa i roto i ta maatau waehere. Mo nga tauira o nga tauira, ka hiahia maatau anake, na te mea ka tautuhia e matou te taitara i te tirohanga. Ko te tauira anake me tuku i te taitara me te "Trace", ko ta maatau hapa mai i te horopaki.

nano errors/templates/errors/error.html

Koinei ta matou tauira tino ngawari, engari ko te mea ngawari noa te kite i nga hapa o ta maatau kaupapa. Panuku, kia whakakorehia e tatou te Debug i nga Tautuhinga.

nano app/settings.py

Kimihia tenei raina i te wa e tika ana, ka huri ke ki te teka

DEBUG = False

Haere i mua me te whakahoki i te taupānga inaianei. Kua rite matou ki te tuku ki tetahi kaitoro Linux mamao, me te taapiri i nga waahanga mai i reira.

sudo backup

I mua i te tuku i tenei waehere ki tetahi kaituku, me whai whakaaro ano pea etahi take me etahi take me te waehere. I runga ano i te keehi, ko nga papanga e whakaae ana ki nga korero kua tukuna ki a raatau ka whai take ki te mokowhiti i tukuna me te uaua ki te tango i te mokowhiti. Kaore tenei e tupu tonu, engari ki te tupu tonu, ka tirotirohia e koe te paanui a te kaiwhakamahi, me te tirotiro i te karapa o te kaiwhakamahi.

Kei te titiro ki te Tohu Whakamana Motuhake Tuarua i tirotirohia e matou, i roto i te hanga, ka rereke nga mea. Tirohia me pehea te reiti o taatau ki te whakauru i nga takiuru, me te whakakii i nga tohu. Mena kei te uru atu nga robots ki tetahi papaanga, e rua nga whakamotuhēhanga e rua ka nui ake te uru atu ki nga waehere i te wa ano ko te kaiwhakamahi. Hei parekura i tenei, me whakamahi e tatou he tauira i roto i nga tauira kaiwhakamahi, e whakaatu ana i te taunekeneke ki te papaanga i te wa e whakamana ana ma te whakamahi i te nama waea maha me te nama waea. Ka tapiritia ano e matou he whiringa ki te whakamana me te imeera. Tiimata ma te whakatika i nga tauira kaiwhakamahi me te nano.

nano users/models.py

Koinei te ahua o te tauira e taapiri ana maatau. Kaore e hiahiatia ana he tikanga, he rereke nga taurangi ki te rokiroki i te ID, te kaiwhakamahi, te roa, te roa me te ngana ki te waea.

# He tohu taketake i whakamahia ki te takiuru ki te paetukutuku

Me taapiri atu he painga ki a maatau kaiwhakamahi, a ka tautuhia e maatau inaianei, i mua i te heke ki te whakauru aunoa i nga kaiwhakamahi. I nga tauira kaiwhakamahi, whakauruhia tenei raina i roto i te whaarangi:

    vendor = models.BooleanField(default=False)

Pērā i ngā whakarerekētanga ki te pātengi raraunga, me whakarite e tatou te heke me te heke ki te pātengi raraunga i nga wa e whakatika ana matou i tetahi konae i Django. Kia maumahara, ki te mahi i tenei ka whakamahia e matou he punaha tuatahi (mena kaore i whakamahia i te wa i tuwhera mai ai te tauranga) a ka kohia e Python te whakahaere.

cd project-directory-you-named # (Ki te hiahiatia)

Inaianei, ka taea e koe te whakauru i nga kaute i hangaia e koe hei kaihoko ma te whakamahi i te anga.

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

Na, kia whakakorea ta tatou Whakaaturanga Motuhake Motuhake hei whakamahi i tenei tohu. Tuatahi, me whakarereke e maatau nga taputapu awhina MFA. Ma te whakamahi 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
# Whakamana i te kaiwhakamahi ma te whakamahi i ta raatau imeera, i te nama waea ranei
    token = MFAToken.objects.filter(uid=username, expires__gt=timezone.now() + datetime.timedelta(seconds=30)).order_by('-timestamp').last() # Tuhia te tohu ma te uara i tukuna i te URL (he 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)) # Mena kaore i hangaia tenei huihuinga, hangaia
    user = User.objects.filter(id=token.user.id).first() # Tikina te kaiwhakamahi mai i te tohu
    if not user and request.user.is_authenticated: return redirect(reverse('feed:home')) # Mena kua oti kē te whakamana, takiuru ki roto
    if not user: raise PermissionDenied() # Whakakorehia mena kaore i kitea he kaiwhakamahi
    if not user.profile.enable_two_factor_authentication and user.is_active and user.profile.check_auth_token(usertoken, token): # Tirohia te tohu tohu
        auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Takiuru i te kaiwhakamahi mena kaore i te takiuru
        user.profile.mfa_expires = timezone.now() + datetime.timedelta(minutes=settings.LOGIN_VALID_MINUTES) # Whakatauhia he paunga i runga i a raatau kaupapa whakamana
        return HttpResponseRedirect(next if next != '' else reverse('landing:landing')) # Whakahauhia te kaiwhakamahi ki te whaarangi
    if not user.profile.mfa_enabled: # Tirohia mehemea ka whakahohea te MFA
        if not check_verification_time(user, token): # Tirohia te wa
            user.profile.mfa_enabled = False # Whakamutua te tau waea
            user.profile.enable_two_factor_authentication = True # Whakahohea te MFA
            user.profile.phone_number = '+1' # Monokia te nama waea
            user.profile.save() # Tiaki te kōtaha
            auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Takiuru i te kaiwhakamahi ki te kore e whakahohea a raatau MFA
    if request.method == 'POST' and not fraud_detect(request, True): # Mena ko te tono he tono panui
        form = TfaForm(request.POST) # Tata ki te puka
        code = str(form.data.get('code', None)) # Tikina te waehere
        if code and code != '' and code != None: # Kia mahara kaore he waatea
            token_validated = user.profile.check_auth_token(usertoken) # Tirohia te tohu tohu
            is_verified = check_verification_code(user, token, code) # Tirohia te waehere
            if token_validated: # Mena nga mea katoa
                if is_verified: # Kei te raupapa
                    user.profile.mfa_enabled = True # Whakahohea te MFA (mena kaore i taea)
                    auth_login(request, user, backend='django.contrib.auth.backends.ModelBackend') # Takiuru ki te kaiwhakamahi
                    for key, value in request.GET.items(): # Hangaia he uiui mo te taatai ​​e whai ake nei (mena he)
                        return HttpResponseRedirect(next) # Tū
            elif not token_validated: # Mena he koretake te tohu
            if p.mfa_attempts > 3: # Mena he maha rawa nga nganatanga
            if form.data.get('send_email', False): # Tukuna te imeera (me te tuhinga ranei)
    # Hoatu te puka (mo te tono tono)

I te wa e taapiri ana matou i tenei waehere, kia pai ki te kawemai i te mahi hei tuku i tetahi imeera. I te tihi o te konae, ko nga tirohanga kaiwhakamahi (me etahi atu kawemai), tapiritia

from .mfa import send_verification_email as send_mfa_verification_email

Na, me tuhi e maatau te mahi i mua i tenei ka mahi. Me toro atu i to maatau tono imeera, me tuku noa i tetahi imeera ki te kaiwhakamahi me te waehere whakaotinga.

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))

Na he mahi nui tenei, inaianei kei a maatau te punaha whakamotu i te waa, te imeera ranei ki te whakauru, engari ka huna ano e matou te hunga e huna ana i o taatau. I taea e enei he kaikorero, he robots, he tangata ranei e kore e pai ki a tatou mahi. Tirohia te tirohanga kei a au mo te tirotiro i nga kaiwhakamahi ki taku paetukutuku:

# hoia
from .tests import is_superuser_or_vendor # Me hanga e matou tenei whakamatautau
    # Tikina he rarangi kaiwhakamahi
    return render(request, 'users/users.html', { # Whakahokia nga kaiwhakamahi ki tetahi tauira

Kia mahara ko tenei waehere ka whakamahia he whakamatautau, me whakaatu e maatau tenei whakamatautau i roto i te konae whakamatautau me te kawemai. Te whakatika i nga kaiwhakamahi / whakamātautau.py, kia waihangahia te whakamatautau.

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

Kei te noho tahi tenei me nga tauira kaiwhakamahi / kaiwhakamahi.html, e ahua pai ana tenei:

Kia mahara ko te tauira ko tetahi tauira tauira, kaiwhakamahi /kaiwhakamahi.html. I te wa e whakamahi ana i tetahi tauira he iti ake te tauira me te kore e whakamahi i nga waahanga, he pai te whakaaro ki te taapiri i te Underscore () I mua i te ingoa o te konae kia whakawhānui atu, kia wehe ai nga tauira.

Kia mahara ko te nuinga o te jinja, kaore pea i enei taurangi katoa e tautuhia. Engari koinei te ahua o taku tohu.

      <small># {{user.id}} </ iti>

Kei te hiahia hoki maatau ki tetahi atu, ki teggle_active.html. Ko tenei tauira he ahua ka taea e maatau te whakaputa mehemea he kaha te kaiwhakamahi.

Me taapiri ano e matou he tirohanga ki nga mahi a te kaiwhakamahi, me nga tauira URL e tika ana. I a matou i reira, me taapiri atu he tirohanga ki te muku i tetahi kaiwhakamahi ki te hiahia maatau.

# Hoia
    success_url = '/' # Te anga whakamua i runga i te URL angitu
    def test_func(self): # Whakamatauhia mena he kaiwhakamahi te kaiwhakamahi me te whakaaetanga ki te muku

Ahakoa e tika ana tenei ina e tika ana, ko te whakakore i te kaiwhakamahi kia kaua e tika te kite o nga kaiwhakamahi e toro ana ki te papaanga mena ka peia e tatou.

Ko nga tauira URL ka tapiritia e matou he ahua penei. Ma te Nano, whakatika nga kaiwhakamahi / Uls.py me te taapiri i enei raina:

nano users/urls.py

Me haere nga raina ki te raarangi o nga huarahi ki nga tirohanga kaiwhakamahi, i mua o te mutunga "]" Engari i muri o te timatanga "[".

# ...
# ...

Na, kia mahara ki te tautoko i te papaanga kia taea ai e koe te tango i te reira i runga i te kaituku tukutuku ka mahi tonu taatau. Mai i te raina whakahau,

sudo backup

Inaianei kua tautokohia to maatau papa.

Na inaianei kei a maatau etahi waahanga pai ake. Engari he aha te pikitia nui i konei? Kaore ano tenei tohu i te ipurangi, kaore ano he kaituku imeera, me whakauru maatau ki te whakauru i te papaanga ki te tirotiro i nga kaiwhakamahi.

Ka tae atu tatou ki tenei katoa. Ko te mea nui mo tenei wa ka whiwhi noa i tenei waehere i runga i te ipurangi, ka taea e taatau ki te mahi noa i etahi raina o te BASH i runga i te tūmau Ubuntu. Me riihi koe i tetahi kaituku mo tenei, mena kaore he kaituku i te kaainga me te ohaurunga ipurangi e taea ai e koe te whakatuwhera i nga tauranga. Ka whakahaerehia e au taku paetukutuku i runga i te HP Z440 e whakauruhia ana ki taku whare, engari ko te tikanga he iti ake te utu mo te taketake ki te riihi i tetahi kaitoha motuhake (VPS).

Kia maumahara ko te waehere kei te whakahaerehia e matou inaianei, he pai ake te tiaki me te whakapai ake i mua i a maatau ki te whakamahi i nga mea hei hanga hua. Kia tupato ki te tiaki i a koe ki te Ipurangi, kia mohio koe ki te tuku i tenei papaanga ki te paetukutuku i runga i te kaiwhakarato Linux, kei a koe tetahi mahere hei aukati i nga taunekeneke e hiahiatia ana me to paetukutuku. Kaore pea tenei e raru i te tuatahi, engari ka tirohia e matou nga momo rongoā hei patu i tenei, tae atu ki te ako miihini, te mohio mohio me te tirohanga rorohiko. I te wa e raru ana, tirohia atu i roto i tenei tuhinga mo te otinga.

Mo nga utu mo te reti i tetahi VPS, he maha nga waahi ka taea e koe te haere. Kei a Google Clouvers Kaihoko, Ios, Kamtera, Amazon AWS, me etahi atu kaiwhakarato ka tukuna nga rongoa tūmau kapua ka pai ki o maatau hiahia.

Me paatohia e koe o raatau puka me te kowhiri i tetahi mahere hei tiimata. Ka taea e koe te haere tahi me tetahi mahere maatauranga, engari kia mohio koe ka taea e te kaiwhakarato te whakatuwhera i nga tauranga tūmau mēra ki te tuku imeera (me Port 2587 me Port 2587. I tenei wa kua whai wheako pai ahau ki te Iohios me te kamatera, ka whakaaetia e raua e rua ki te tuku i te imeera mutunga me te utu iti.

Ka hono atu koe ki to kaiwhakarato hou mo te kawa e kiia ana ko te SSH, te anga ranei, ka taea e koe te hono atu ki te kaituku me to rorohiko whaiaro. Ka whakaturia e koe te kaituku, ka tono pea te kaiwhakarato manaaki ki a koe ki te taapiri i tetahi tohu SSH, ka hoatu ranei ki a koe he ingoa ingoa me te kupuhipa. Ko te kī SSH ko te pehea e uru ai koe ki te kaituku mai i te raina whakahau hei whakatika i te waehere. Whakamahia nga whiringa SSH-keygen ki te whakaputa i tetahi kī SSH.

ssh-keygen

Whakaorangia te konae me te tuhi i te waa mena ka hiahia koe, he pai ki te huri i o tohu SSH mena kaore ano koe. Na, ka taea e koe te whakamahi i te whakahau e whai ake nei kia kite i to tohu SSH. Ka hiahia koe ki te kape ki to kaituku mamao kia taea ai e koe te whakamahi hei whakamana.

cat ~/.ssh/id_rsa.pub

Mena kaore i taea e koe te kite i tetahi kī SSH ka pato i taua whakahau (he roa nga matie me nga reta e tiimata ana me te whakamahi i tetahi tohu RSA.

ssh-keygen -t rsa -b 4096

Waihangahia he VPS e whakahaere ana i a Ubuntu, heoi, ka whakamahere koe ki te mahi i tenei. Ina oti ana e koe te VPS ma te paatene i nga puka i runga i te paetukutuku Profiders (kamatera.com, i runga ranei), ka hiahia koe ki te takiuru. Me whai whakaaro ano koe ki te ingoa kaiwhakamahi taunoa i runga i te tūmau i hangaia e matou, hei tauira, Ubuntu.

ssh ubuntu@XX.XX.XX.XX

Ka taea pea koe te tono ki te kupuhipa, mena ka tonoa koe ki tetahi kupuhipa, whakauru atu ki te ingoa kaiwhakamahi taunoa, na kia tiimata te whakamahi i tetahi kaiwhakamahi hou me te taapiri i tetahi tohu SSH ki a raatau putea.

Me timata ma te taapiri i tetahi konae SSHD_Config hou, e kii ana i te kaituku me pehea te whakamahi i te SSH.

nano sshd_config
# Koinei te konae whirihoranga raupaparorohiko raupaparorohiko SHSD.  Kite
# SSHD_Config (5) mo etahi atu korero.
# I whakahiatohia tenei sshd me te ara = / USR / rohe / sbin: / USR / SBIN: / USR / SBIN: / SBIN / GIND:
# Ko te rautaki i whakamahia mo nga whiringa i roto i te SSHD_Config kua tukuna me
# OpenSSH ko te tautuhi i nga whiringa me o raatau uara taunoa kei hea
# taea, engari waiho atu i nga korero.  Ko nga whiringa kaore i whakatauhia
# uara taunoa.
# Port 22
# Korero atu
# Whakarongo 0.0.0.0
# Whakarongo ::
# Castkey / etc / ssh / ssh_host_rsa_key
# Castkey / etc / ssh / ssh_host_ecdsa_key
# Castkey / etc / ssh / ssh_host_ed25519_key
# CIPHS me TE WHAKAMAHI
# Reeylit taunoa kaore
# Piko
# Ko te kaituhi syslogfaicitility
# Nga korero moata
# Whakamananga:
# Takiuru Pūrere 2M
# Condledrootlogin aukati-Kupuhipa
# Stricmodes ae
# Taxauthtries 6
# MaxSession 10
# Tūmanako .ssh / whakamana_keys2 kia kore ai e raru i te heke mai.
# Tuhinga o mua
# Kaituhi
# Kaiwhakawhanake Pouaka
# Mo tenei mahi ka hiahia koe ki te mau ki nga tohu o roto / etc / SSH / SSH_KONS_host
# HostBodAuthentication No
# Hurihia ki te Ae ki te kore koe e whakawhirinaki ki te ~ / .ssh / mohiotia_host mo
# Ko HorstBodAuthentication
# Kaore e warewaretia
# Kaua e panui i nga kaiwhakamahi / .rhost me ~ / .Shosts Kōnae
# Kei te Orakore Ae
# Hei whakakore i nga Kupuhipa Kuputuhi Maamaa, hurihia kia kore!
# PermitempTasspasswors Kaore
# Hurihia ki te YES kia whakahohe i nga Kupuhipa-Whakautu Whakautu (take e tupato ana
# Ko etahi o nga tauira a Pam a Pam
# Kōwhiringa Kerbehos
# Kerberosauthentication No
# Kerberosorlowalpasswd Ae
# KerbeoSckechanup Ae
# Kernyosgetafsken no
# Kōwhiringa GSSAI
# Gssapiauthentication no
# Gssapicle -credianses ae
# Gssabistiutctrictorcheck ae
# Gssapikeyexchange kore
# Whakatakotoria tenei ki te 'Ae' kia taea ai e a Pama te whakamana, te tukatuka putea,
# me te tukatuka huihuinga. Mena ka whakahohea tenei, ka whakamanahia e Pam Pam
# kia whakaaetia ma te kbdinteractiveauthentication me te
# Kupuhipa Kupuhipa.  Kei runga i te Whirihoranga o to Pam,
# Ko te whakamotuhēhanga a Pam ma te KBdinteractiveAuthentication ka haere tonu
# te tautuhinga o te "condeatrootlogin kaore-kupuhipa".
# Mena kei te hiahia koe ki te Kaute a Pam me te Wahanga Whakauru kia rere ki waho
# Ko te whakamotuhēhanga a Pam, ka whakahohe i tenei engari ka tautuhia te Whakauru Kupuhipa
# me te kbdinteractiveAuthentication ki 'no'.
# WhakaaetangaWhakaahuaWhakaahua
# Blowtcpforwarding Ae
# Karekau he
# X11displayofSet 10
# X11usecolhost Ae
# Lendetty ae
# Tāpiri Ae Ae
# TCPKeepative Ae
# Whakaaetanga kaore
# Kua whakaroa te whakaurua
# Kaihoko 0
# Liversivecountmax 3
# Whakamahia
# Pidfile /rrun/sshd.pid
# Maxstartups 10: 30: 100
# Tuhinga o mua
# Chootdirectory Kaore
# Proverdendum kaore
# Kaore he ara putea taunoa
# Tukua te kiritaki ki te tuku i nga taurangi taiao o te rohe
# Whakakahoretia te taunoa o te kore o nga kohinga
# Tuhinga o mua
# Ōrite te kaiwhakamahi anoncvs
# X11Whakaahua kaore
# Blowtcpforward kore
# Tuhinga o mua
# Tūmau ForceCommand CVS

Kia maumahara, Ctrl + x me te whakaora i te konae. Panuku, me tuhi i tetahi tuhinga taketake i karangahia (katoa i roto i te whaiaronga kaainga taunoa o to maatau kaiwhakamahi).

nano initialize

Tāpirihia enei raina ki te konae, whakakapime to tohu SSH i kitea e koe ma te whakamahi i te ngeru. (.ssh / id_rsa.pub)

# ! / bin / bash

Ki te haere koe i tenei konae, me timata te raina ma te raina. Ko te raina tuatahi e kii ana i te kaiwhakamahara he tuhi tuhi tenei. Katahi matou ka whakauru i te whakawhirinaki, te kape i te SSHD_Config ki te raarangi tika, te whakarite i te SSH, te whakaputa i te ingoa 'Tumuaki' (ka taea e koe te whakauru i te ingoa o te kaiwhakamahi me o raatau ingoa. Ka tapiritia ano e matou te roopu ki te roopu Sudo, whakaputa i a raatau tohu SSH, whakauruhia o maatau matua ki nga ki whai mana me o raatau ano, me te tuhi i o raatau matua. Ko tenei kaiwhakamahi hou ka uru ki te whakauru ki te papaanga.

I roto i te waa hou, haere whakamua ka whakatuwhera ano te tūmau.

ssh team@XX.XX.XX.XX

Kaua e hiahia koe ki te kupuhipa i tenei wa, i a koe ano he tohu SSH. Kua monokia ano hoki matou i te takiuru me te kupuhipa kia mau tonu ai te pae.

Na, ka tiimata tonu tenei tūmau me te kore korero mo runga. Kia tiimata ma te kowhiri i ta maatau kaupapa mai i te Git kia taea ai e taatau te tango me te whakahaere i te miihini mamao. I runga i te kaituku mamao te hono atu i te SSH, te tuatahi taarua to tohu SSH:

cat ~/.ssh/id_rsa.pub

Panuku, Whakapirihia tenei ki ki nga tautuhinga Git penei i a maatau i mua ki te whakatu i to maatau puranga GIT. Ka taea e maatau te tirotiro i ta maatau kaupapa ki te tūmau. Kia mahara kua tautokohia e koe te kaupapa tuatahi na reira kei te tūmau Git ki te tango.

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

Tino tika. Inaianei kei konei katoa nga konae. Ka taea e tatou te kite i a raatau me te ls

ls

Na, me timata taatau ki te whakatu i te tūmau. Tuatahi, Tāruatia to whaiaronga Kaupapa ki tetahi ingoa ngawari, maumahara ka whakamahia e matou mo te kaupapa.

cp -r yourproject whatyoucalledit

Te wahi "whatyoucalledit" ko te ingoa hou o to kaupapa. Panuku, me hanga e maatau te whai kiko ki te whakatu i te tūmau. Ka tiakina e matou tenei whaipainga me te whakamahi i nga ra kei mua. Hei hanga i tenei taputapu, kia waihangahia e tatou he waahanga kaiwhakamahi hei tautuhi me pehea te whakatika i tetahi tuhinga. Ma te whakamahi i te Bash, Whakatika / USR / Bin / Hoahoa

sudo nano /usr/bin/ascript

Kia mahara ki te whakamahi i te sudo i reira kei a koe nga whakaaetanga hei whakatika i te konae. I roto i te konae, taapirihia enei raina:

# ! / bin / bash
    echo "# ! / bin / bash ">> / usr / bin / $ 1

Kia maumahara tenei tuhinga he tautohetohe, ko te ingoa tuhi, hei $ 1. I te tuatahi ka tirotirohia mena kei te noho te konae, kaore ranei i te kii, ka tapiritia te raina tuatahi, ka hurihia ona whakaaetanga ki / etc. Mena kei te noho kē te konae, ka huri noa i nga whakaaetanga me te whakatika. Whakaorangia te konae, a muri ka hurihia e matou nga whakaaetanga. I te mea e whakamahi ana matou i tenei tuhinga tuhi, kaore e tika kia mahi ano tatou.

sudo chmod a+x /usr/bin/ascript

Tino tika. Na, kia waihangahia he tuhinga tuhi. Tuatahi, kaua e raru koe, engari tirohia he aha te ahua o taku tuhinga tuhi. Ka haere matou na roto i ta tenei tuhinga e penei ana i to kaupapa, kaore koe e hiahia i nga mea katoa i roto i aku tuhinga ka tiimata.

# ! / bin / bash
# sudo chmod a + x tuhinga x / usifistup
# ./scripts/usersup
# SSH-Keygen
# Whaiaronga Kaupapa
# Nga whakahau a te raarangi
# Nano config
# Whakapiripiri
# Whakahou me te whakauru
# Whakahohea te Antivirus Clamav
# Whakatakotoria Ingoa Hoanui
# Tautuhi Poto
# Tautuhi Raraunga Tatūnga
# Monokia Iptables
# Tāuta BitDeqender
# Tautuhi Whakaata
# Hanga takirua
# Tatūnga VirTualenv
# Haere me te hanga i nga mea e whakawhirinaki ana
# Whakatauhia nga ture papaahi
# Tāutahia te Taonga PYPI
pip3 install --upgrade opencv-python # == 4.5.4.60
pip3 install --upgrade opencv-contrib-python # == 4.5.4.60
# Whakakihia te Whakauru OpenCv-Python == 4.5.5.64
# PIP tāuta tuwhera tuwhera-Python == 4.5.5.64
# Tāuta i te Cervot
# Whakahaere Cerbot
# Whakahaungia te Tūmau Mail
# Tānuitanga Tārua
# sudo cp /etc/letsencrypt/live/femmebabe.com/privkey.pem provicey.pem
# sudo cp /etc/letsencrypt/live/femmebabe.com/cert.pem cert.pem
# Patch Venv
# Tautuhia nga tautuhinga kaiwhakamahi
# Whakaaetanga Whakaaetanga
# Sudo Cent -r Team: Kaiwhakamahi / V / Run / Run /
# Sudo Chown Root: Root / Run / Sudo / TS -R
# sudo chmod 664 db.sqlite3
# Sudo Chown W9 raraunga: Kaiwhakamahi DB.SQLite3
# Tāruahia te Whiriho me te Whakaaetia Nga Whakaaetanga
# Raraunga tatūnga
# Inject a Tāpiri a Pam config me te tango i te config ssh
# sudo sed -i '' -e '$ d' /etc/pam.d/sshd
# sudo sed -i '' -e '$ d' / etc / kōtaha
# Nga tuhinga panui kape me nga Whakaaetanga Whakaaetanga
# Whakahoungia kia taea ai nga ratonga
# Whakahohea nga Tauira Apache
# Sudo A2DISMOD MPM_Event
# Sudo A2Dismod MPM_Work
# Sudo A2enMod MpM_Prefork
# Monokia Pae Tauhou
# Whakahohea to maatau papaanga
# Whakahoutia a Daemon me te whakaara ano i te Apache, PostFix me te Rootndkim
# Whakaaetanga Whakaaetanga
# Whirihoranga huri
# Iti te miihini miihini
# Tata Git
# Whakaatuhia te IPV6 me te RoadKim mo te whirihoranga rohe
# Kua oti te Tatūnga

He maha nga tatūnga! Hei poto, ko nga whakahau tohu tohu, ko nga tohu o nga konae, te tango me te tango i te Paetukutuku, te Whiriwhiria i te Paetukutuku Ko nga tiihi e whakawhirinaki ana, ka whakauruhia nga tiwhikete me te whakanoho i te Whirihoranga, ka tiimata, ka huri i te whakaaetanga, ka tohua te IP, te IPV6 Wāhitau IP. Tika, engari he rite ki te maha o nga waehere. Kaore e hiahiatia e matou te nuinga o tenei na te mea kaore e taea e matou te whakawhirinaki, kaore matou e whakamahi herene, e hereneybeat, daphne ranei, engari ka whakauruhia e matou etahi o ratou. Kia mahara ko tenei waehere kua whakatauhia he rohe i etahi rohe.

Me hoko mai ano he ingoa rohe (he utu iti mo ia tau). Ka tūtohu ahau ki te SudSpace mo te hoko i te rohe, he maamaa te whakamahi i o raatau papaaho me te ngawari ki te whakamahi. Ka taea e koe te hoko i tetahi rohe e pai ana koe, engari kei te whakamahi ahau i te rohe Femmebabe.com i roto i tenei tauira. Ina hokona e koe tetahi rohe, upoko ki te rarangi Whiriwhiringa a Squarespace me te taapiri i tetahi rekoata e tohu ana i to rohe ki te tūmau i te Wāhitau IP. Kia penei te ahua:

@ A xx.xx.xx.xx

Ma te @ kaiwhakahaere hei kaiwhakarato, ko te tikanga o nga subdomains i raro i tenei rohe ka anga katoa te rohe ki te tūmau. He maha nga rekoata hei whakaatu, engari ka taea e taatau te neke ki enei waa kua rite taatau ki te tuku mēra. Kia maumahara, he maha nga ra ka taea e koe te tuku angitu i te mēra mai i te tūmau. Ko nga rekoata DNS kei a maatau te waahi ka whai waahi ki te toha.

Heoi, ko te rekoata anake e tika ana kia tiimata ko te rekoata. Na inaianei ka taea e taatau te whakakii i nga tuhinga tuhi i raro nei i runga i ta maatau kaupapa me te whakahaere.

Me timata me te tuhi tuhi iti ake ki te whakauru noa i nga mea e hiahiatia ana e tatou mo te ahunga whakamua. E kore matou e whakamahi i te maha o nga ti'aturi, i te pou ranei, ka tiimata noa tatou i te tūmau HTTP taketake me te awangawanga mo te mea kua oti. Kia maumahara, ki te tiki i tetahi tiwhikete HTTPS me te whakahaere tika i te tūmau, me hoko e maatau te rohe me te reti i tetahi kaitoro. Mo tenei wa, whakakapihia te "Team" i roto i tenei konae me te ingoa o to kaiwhakamahi, "Dir" me te raarangi o to kaupapa, me te tuku i to imeera me to rohe i nga tohu <».

I tua atu, i mua i te whakahaere i tenei waehere, me whakarereke e tatou nga tautuhinga ki te pouahi e tautoko ana te kaiwhakarato manaaki, mena he. I te nuinga o te waa ko tenei i te ripa 'whatunga' o to kaiwhakarato manaaki, mena kei te manaaki koe i a koe ano, ko ia i te waahanga 'tauranga whakamua' o to pouara. Kei te hiahia hoki koe ki te whakatu i tetahi IP Static na roto i to pouara me te wahitau o to miihini tūmau, mena kei te whakamahi koe i te manaaki whaiaro. Me whakatuwhera e koe nga tauranga e whai ake nei mo te panui / tuhi.

22 (SSH) 25 (Mail) 587 (Mail) 110 (kiritaki mēra) 80 (http) 443 (https)

# ! / bin / bash
# Nga whakahau a te raarangi
# Nano config
# Whakapiripiri
# Whakahou me te whakauru
# Whakahohea te Antivirus Clamav
# Whakatakotoria Ingoa Hoanui
# Tautuhi Raraunga Tatūnga
# Monokia Iptables
# Tatūnga VirTualenv
# Tāuta i te Cervot
# Whakahaere Cerbot
# Tautuhia nga tautuhinga kaiwhakamahi
# Whakaaetanga Whakaaetanga
# Sudo Cent -r Team: Kaiwhakamahi / V / Run / Run /
# Sudo Chown Root: Root / Run / Sudo / TS -R
# Whakahoungia kia taea ai nga ratonga
# Whakahohea nga Tauira Apache
# Whakahoutia a Daemon me te whakaara ano i te Apache, PostFix me te Rootndkim
# Whakaatuhia te IPV6 me te RoadKim mo te whirihoranga rohe

I mua i te whakahaere i tenei waehere, kia mahara ki te rohe i hokona e koe ka hono atu ki te kaituku. Ki te mahi i tenei, whakatuwhera i te tauranga ki to miihini rohe, ka whakahaere i tenei whakahau me to rohe:

ping femmebabe.com # Whakauruhia to rohe i konei, i muri i te ping

Mena he pai te ahua o te kaitoro me te tuku urupare, kua rite taatau ki te whakahaere i te tuhinga tuhi me te whakauru i nga toenga me te tiimata, te tiimata me te tohu i ta maatau Kaiwhakahaere Apache.

Ehara tenei i te tatū katoa e hiahiatia ana hei whirihora i te pou, ka titiro atu matou ki te huinga i muri mai. Inaianei, rere atu tenei tohu tatūnga me tango i etahi meneti hei whakauru me te tohu i to kaitoro. Ano ano, kia mohio ki te whakakapi i te ingoa, te imeera me te ingoa rohe i roto i te tuhinga i runga i te ingoa i hokona e koe.

Inaianei kei te whakawhiwhia te tūmau, ka taea e koe te haere ki te URL i roto i tetahi kaitirotiro paetukutuku me te tirotiro kia pai ai te whakahaere i te tūmau https. Mena kaore, ka ngana ki te tatari mo te rekoata o te DNS kia pai ake ai te whakahaere i te whakahau e whai ake nei hei whakahou i te Tiwhikete Tiwhikete:

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

I te mea kua whirihora tika koe i nga mea katoa, me uru koe ki te wharangi taunoa a Apache tika kia mohio ai kei te mahi to waehere me te whakaatu i te whaarangi paetukutuku. Panuku, me whakatika i nga Tautuhinga.py ki te whakarereke i ta maatau aratau debug taunoa ki te whakaputa. Ka whirihora ano e matou te rohe i nga tautuhinga, me nga IPS o roto.

nano yourproject/settings.py

I nga tautuhinga, te whakarereke / Tāpirihia enei raina.

# Whirihorahia

Na, me whiri ake taatau ki a Apache2. Kia whakatika i te konae whirihoranga ka tohatohahia e matou me tenei raina:

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

Ko tenei konae whirihoranga me whai ingoa to maatau rohe i roto, me te ingoa o te kaiwhakamahi me te kaupapa. Kei te whakamahi ahau i te ingoa rohe Femmebabe.com, te roopu ingoa ingoa, me te ingoa kaupapa Femmebabe.

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>

Kia mahara ki te whakakapi i te ingoa o te kaupapa, nga raarangi, me te rohe i tenei tauira waehere ka whirihora i to kaitoro. Na, me whakakorehia e matou te pae taunoa. Ka taea tenei te mahi ma te whakamahi i te taakaha.

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

Panuku, ka taea e taatau te pae taunoa me te whakahou ano i te Apache2, me te whakamahi i te peeke. Kia mahara ki te whakakapi i te femmebabe me te ingoa o te konae i korerotia e koe i te wa e whakatika ana i te / etc / Apache2 / Saites-e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana / e waatea ana /.

sudo a2ensite femmebabe-le-ssl
sudo systemctl reload apache2

Hoki atu ki to rohe i te Rererangi. Me kite koe i te papanga i whirihora e koe i roto i to kaitirotiro paetukutuku. Mihi Mena kaore koe e kite, me whakarereke pea koe. Tirohia te tautuhinga i roto i to kaupapa, whirihoranga Apache, me te whakarite kia kaua e hapa, me te whakahaere i nga whakahau e whai ake nei hei tirotiro i te kaupapa mo nga hapa.

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

Mena he hapa kei a koe i to kaupapa Python, ara ki te waahi me te whakatika. Kaore pea koe e kite i nga mea katoa e pa ana ki a raatau, na mena he hapa noa koe ", kaore i te rehitatanga e whai ake nei i roto i te taiao mariko, ki te whakaatu i te he.

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

Panuku ki te Raina 83, kei te whakaarahia tenei hapa (Whakaarahia te RUNTIMEERROR ("kaore e taea te whakaputa i te korero") He penei tenei:

                # Aukati i nga piiraa rongonui kia kore ai e rere ki te haere i te haerere ()
                # tikanga rua.
# Whakaarahia te RUNTIMEERROR ("TE WHAKAMAHI () kaore i te reentrants")

Ka taea e koe te tirotiro ano i te kaupapa me te whakaatu i te he.

python manage.py check

Na ka kite koe i te he me te whakatika. Ka oti ana koe, ka whakahiatohia te waehere me te kore e hapa, kia huri ki te whakarereke i te konae kia penei te ahua:

                # Aukati i nga piiraa rongonui kia kore ai e rere ki te haere i te haerere ()
                # tikanga rua.
# self.app_configs = {}

I te mea kei te ipurangi te tūmau, ka huri ke taatau ki te whakarereke, me whakamahi e maatau te whakahau e whai ake nei hei whakahou i te tūmau:

sudo systemctl reload apache2

Whakamataku! Engari he aha te tuku mēra? Hei tiimata te tuku imeera, me matua whakahou koe i te whirihoranga rohe. Me uru tenei ki to paerangi DNS i Squarespace, he aha ranei te ingoa rohe rohe i whiriwhiri koe. Me whakauru ano hoki maatau me te taapiri i te whirihoranga, me te whakahaere i etahi o nga whakahau.

Tuatahi, kia whiwhi tatou i te wahitau IPv6 o te tūmau. Ka whakatuwherahia e matou to DNS me te taapiri i nga rekoata.

Ki te tiki i te wahitau IPv6 a te kaituku, whakamahia tenei whakahau:

ip -6 addr

Na, ka taea e taatau taapiri i nga rekoata e whai ake nei ki nga tautuhinga DNS. He rite tenei ki aku rekoata. Heoi, mo o rekoata, me whakakapi koe i te wahitau IP me to IP (kaore i te 75.14.182.214, naku). Also add your domain in place of femmebabe.com, as well as your IPV6 address found with the previous command (you can't use mine, fe80::725a:fff:fe49:3e02). Kaua e manukanuka ki te Domainkey mo tenei wa, ka hangaia tenei i te wa i whakaturia e matou te pou, te kaituku mēra, me nga punaha, ka tuhia te matua. Ka whakapumautia e matou tenei whakamutunga.

@ He N / a 75.14.182.214

@ Mx 10 FEMMEBABE.com

@ Whakaahua N / a FEMMEBABE.com

@ TXT N / a TXT @ v = SPF1 MX IP75.14.182.214444IP6: FE80 :: 725A: FFF: FEF49 ~ Katoa

taunoa._bimi TXT N / a v = bimi1; L = https: //femmebabe.com/media/static/femmebabe.svg

_dmarc TXT N / a v = dmarc1; P = Kore

haangai._domainkey TXT N / a

Na, me taapiri e maatau etahi whirihoranga kaha mo te pou o te pou. Ko nga mea katoa e tika ana kia mahia e maatau te whakakapi i te ingoa rohe, femmebabe.com, me te ingoa rohe e whakamahia ana e koe. Kia tirohia e koe nga konae katoa e tetahi, ka whakauru ki a raatau i roto i tetahi raarangi whaiaronga e kiia nei he whirihoranga i roto i ta maatau kaupapa, hei whakauru ki te OS.

nano config/etc_postfix_main.cf

Tāpirihia tenei tuhinga ki te konae

# Tirohia te /sr/share/Postfix/main.cf.dist mo te korero, nui ake te putanga
# Motuhake Motuhake: Te tautuhi i te ingoa kōnae ka puta i te tuatahi
# raina o taua konae ka whakamahia hei ingoa.  Te taunoatanga o te Debian
# / etc / ingoa ingoa.
# myorigin = / etc / ingoa ingoa
# Tuhinga o mua.
# Te whakatikatika i te raina o muri ki te whakaputa "Mail Kua Whakapai" Whakatupato
# TUATAHI_WARNING_TIME = 4H
# Tirohia te http://www.postfix.org/compatility_readme.html - taunoa ki te 3.6 i runga
# Tuhinga o mua.
# Nga tohu TLS
# Whirihoranga Minter

Whai muri config!

nano config/etc_postfix_master.cf

Tāpirihia enei raina:

# 
# Kōnae Whirihoranga Kaiwhakaako PostFix.  Mo nga korero mo te whakatakotoranga
# O te konae, tirohia te Kaiwhakaako (5) Pukapuka Tohutoro (whakahau: "Man 5 Kaiwhakaako" ranei
# I runga i te raina: http://www.postfix.org/master.5.html).
# 
# Kaua e wareware ki te mahi "restfix reload" i muri i te whakatika i tenei konae.
# 
# ====================================================================================================
# Momo Ratonga Motuhake Kore Utu Awhina i te Whakatutukitanga Oraup MaxProc whakahau + Args
# (Ae) (ae) (kaore) (kaore) (100)
# ====================================================================================================
# smtp infenet n - y - 1 postscreen
# SMTPD Pass - - Y - - SMTPD
# DNSBLOG UNIX - - Y - 0 DNSBLOG
# Tlsproxy UNIX - - Y - 0 TLSProxy
# Whiriwhiria tetahi: Whakahohe i te tukunga mo nga kiritaki Loopback anake, mo tetahi kiritaki ranei.
# 127.0.0.1:submission infit n - Y - - SMTPD
# -o syslog_name = postfix / tukunga
# -Ko SMTPD_TLS_security_level = whakamere
# -Ko SMTPD_SASL_AUTH_ENABLE = Ae
# -o smtpd_tls_auth_only = ae
# -Ko SMTPD_Rect_unlisted_recie = No
# -Ko SMTPD_Client_Rertrictions = $ Mua_client_Rertrictions
# -Ko SMTPD_HELO_RRCRINTS = $ Mua_helo_Rertrictions
# -Ko te smtpd_sender_restrictions = $ Mua_Sender_restrictions
# -Ko SMTPD_Recicient_Rertrictions =
# -Ko SMTPD_RAYLY_RATRCINGS = Whakaaetanga_SASL_AUThenicated, paopao
# -E milter_macro_daemon_name = i ahu mai
# Whiriwhiria tetahi: Whakahohe i te SMTP mo nga kiritaki Loopback anake, mo tetahi kiritaki ranei.
# 127.0.0.1::Smtps INT N - Y - - SMTPD
# SMTPS INT N - Y - - SMTPD
# -o syslog_name = PoustFix / SMTPS
# -Ko SMTPD_TLS_WRAPPERMODE = Ae
# -Ko SMTPD_SASL_AUTH_ENABLE = Ae
# -Ko SMTPD_Rect_unlisted_recie = No
# -Ko SMTPD_Client_Rertrictions = $ Mua_client_Rertrictions
# -Ko SMTPD_HELO_RRCRINTS = $ Mua_helo_Rertrictions
# -Ko te smtpd_sender_restrictions = $ Mua_Sender_restrictions
# -Ko SMTPD_Recicient_Rertrictions =
# -Ko SMTPD_RAYLY_RATRCINGS = Whakaaetanga_SASL_AUThenicated, paopao
# -E milter_macro_daemon_name = i ahu mai
# 628 INT N - Y - - qmqpd
# Qmgr Unix n - N 300 1 oqmgr
# -Ko te SMTP_HELO_TIMATOUT = 5 -O SMTP_CONNECT_TIMTOUT = 5
# 
# ===============================================================================================
# Ko nga hononga ki te raupaparorohiko kore-poutū. Kia mohio ki te tirotiro i te pukapuka
# Nga whaarangi o te raupaparorohiko kore-poutū kia kitea ai he aha nga whiringa e hiahiatia ana.
# 
# He maha nga ratonga e whai ake nei e whakamahi ana i te paipa pou (8) tuku
# kaihoko.  Tirohia te putorino (8) te wharangi tangata mo nga korero mo te $ {tohu}
# me etahi atu tohu panui karere karere.
# ===============================================================================================
# 
# Maillrop. Tirohia te kōnae postfix i te konae i te konae mo nga korero taipitopito.
# Whakatakotoria hoki i te Main.cf: Maryrop_destition_recient_limit = 1
# 
# 
# ===============================================================================================
# 
# Ka taea e nga putanga o te Haikaa te whakamahi i te urunga o te "LMTP" LMTP.
# 
# Tautuhia i Cyrus.conf:
# LMTP CMD = "LMTPD -A" Whakarongo = "localhost: lmtp" proto = tcp4
# 
# Whakatakotoria i te Main.cf tetahi, neke atu ranei o enei e whai ake nei:
# MARKOX_TRANSPORT = LMTP: INT: WANTHHHS
# Virtual_transport = LMTP: INT: localhost
# 
# ===============================================================================================
# 
# Cyrus 2.1.5 (Amos Guaux)
# Whakatakotoria hoki i Main.cf: Cyrus_destition_recite_limit = 1
# 
# cyrus unix - n n - - putorino
# Flags = DRX Kaiwhakamahi = Cyrus Argv = / Cyrus / Bin / Hoahoa -Re -R -R $ {Kaituku} -M $ {Upoko} $ {kaiwhakamahi}
# 
# ===============================================================================================
# Ko te tauira tawhito o te tuku ma te cyrus.
# 
# tawhito-cyrus unix - n n - - putorino
# Flags = r kaiwhakamahi = cyrus argv = / cyrus / bin / land -m $ {toronga} $ {kaiwhakamahi}
# 
# ===============================================================================================
# 
# Tirohia te konae UCPP_RADME mo nga korero whirihoranga.
# 
# 
# Ko etahi atu tikanga tuku o waho.
# 

Me te whirihoranga o te o te ockim. Ka tautuhia e te OccetNndkim nga kaituku imeera me nga tohu rohe kia pai ake ai ratou. Ki te kore, kaore i hainatia te mēra, kaore pea e waiho ki te pouaka pouaka.

nano config/etc_default_opendkim

Tāpirihia enei raina:

# FAKATOKANGA: Ko te konae whirihoranga tuku iho. Kaore i te whakamahia e te o te actndkim
# ratonga pūnaha. Whakamahi koa nga tohu whirihoranga e rite ana ki
# /etc/opendkim.conf hei utu.
# 
# I mua, ka whakatika tetahi i nga tautuhinga taunoa i konei, ka mahia
# /Lib/opendkim/opendkim.service.generate ki te whakaputa i nga konae kei te huri i nga konae i
# /etc/systemd/system/sopendkim.service.d/override.conf and
# /etc/tmpfiles.d/opendkim.conf. Ahakoa e taea tonu tenei, inaianei
# tūtohutia kia whakatika tika i nga tautuhinga i roto i /etc/opendkim.conf.
# 
# Daemon_opts = ""
# Hurihia ki te / var / spool / postfix / Whakahaere / RunNndkim ki te whakamahi i te turanga UNIX me
# Putea i roto i te kohukohu:
# Rundir = / var / spool / Pousfix / Whakahaere / RoroNndkim
# 
# Te take ki te tautuhi i tetahi turanga whakakapi
# Kia mahara ko te whakatakoto i tenei ka pakaru tetahi uara tika i roto i te ocking.conf
# taunoa:
# Whakarongo ki nga hononga katoa i te tauranga 54321:
# Patu = Inet: 54321
# Whakarongo ki te Loopback i te tauranga 12345:
# Paka = INT: 12345 @ localhost
# Whakarongo i te 192.0.2.1 i Port 12345:
# Paka = Inet: 12345@192.0.2.1
nano config/etc_dovecot_conf.d_10-master.conf

Tāpirihia enei raina:

# default_process_limit = 100
# default_client_liptit = 1000
# VSZ taunoa (Rahi mahara mariko) te rohe mo nga mahi ratonga. Ko te nuinga tenei
# Ko te hiahia kia hopu me te patu i nga tukanga e tarai ana i mua i te kai
# mea katoa.
# default_vsz_limit = 256m
# Ko te kaiwhakamahi takiuru te whakamahi i roto i nga tikanga takiuru. Koinei te mea tino kore
# kaiwhakamahi i roto i te punaha dovecot. Kaore e taea te uru ki tetahi mea.
# default_login_user = Dovenull
# Ka whakamahia te kaiwhakamahi o roto e nga tikanga kaore i te kore. Me wehe ke mai
# Kaiwhakamahi takiuru, na reira kaore e taea e nga tukanga takiuru te whakararu i etahi atu mahinga.
# default_internal_user = dovecot
    # Port = 143
    # Port = 993
    # SSL = Ae
  # Te maha o nga hononga ki te hapai i mua i te tiimata i te mahi hou. Te tikanga
  # Ko nga uara whai hua ko te 0 (mutunga kore) me te 1 ranei. 1 he haumaru ake, engari 0
  # He tere ake. <Doc / Wiki / Takiuru
  # service_count = 1
  # Te maha o nga tukanga hei tatari tonu mo etahi atu hononga.
  # Tukanga_min_avaail = 0
  # Mena ka tautuhia e koe te ratonga_count = 0, ka kaha pea koe ki te whakatipu i tenei.
  # vsz_limit = $ taunoa_vsz_vsz_limit
    # Port = 110
    # Port = 995
    # SSL = Ae
    # Port = 587
  # Waihangahia te whakarongo i te kore e taea e koe te whakamahi i te turanga UNIX i runga ake nei
  # Inet_Listener LMTP {
    # A ape i te hanga LMTP e kitea mo te Ipurangi katoa
    # wāhitau =
    # tauranga =
  # }
  # Ko te nuinga o te mahara ka haere ki te MMAP () ki nga konae. Ka hiahia pea koe ki te whakapiki i tenei
  # Whakatakotohia mena he nui nga pouaka pouaka.
  # vsz_limit = $ taunoa_vsz_vsz_limit
  # Max. Te maha o nga tukanga IMAP (Hononga)
  # tukanga_mit = 1024
  # Max. Te maha o nga tukanga pop3 (Hononga)
  # tukanga_mit = 1024
  # Max. Te maha o nga tukanga tukunga SMTP (Hononga)
  # tukanga_mit = 1024
  # Ko te tikanga a Ath_Scket_Path ki tenei turanga whakamahi i te taunoa. Ko te tikanga tenei
  # I whakamahia e Dovecot-lada, Dovecodm, te tikanga IMAP, me etahi atu kaiwhakamahi
  # Ko nga Whakaaetanga katoa mo tenei turanga ka taea te tiki raarangi ingoa ingoa katoa me
  # Tikina nga hua o nga tirohanga whakamahi katoa a te katoa.
  # 
  # Ko te aratau 0666 ka taea e tetahi te hono atu ki te turanga, engari ko te
  # Ka angitu te rapu i nga whakaaturanga whakamahi i te mea ka hoki mai te kaimoana i tetahi mara "UID"
  # Ka rite ki te Uid o te Kaituku. Ano hoki ki te UID a Claller, he tohu ranei
  # Ko te UID te UID, te GID ranei ka angitu te tirotiro. Ko nga mea katoa e pa ana ki te kore.
  # 
  # Ki te hoatu i nga kaihaka ki nga whakaaetanga kia tirohia nga kaiwhakamahi katoa, whakaturia te aratau ki
  # tetahi atu mea atu i te 0666 ka taea e Dovecot te whakauru i te kaarai i te
  # Nga Whakaaetanga (E.g. 0777 e tuku ana i nga whakaaetanga katoa).
  # Ko te tikanga o te Kaimahi Mahi a Apard e rere ana hei pakiaka ma te taunoa, kia uru ai
  # / Etc / atarangi. Mena kaore e tika ana, me whakarereke te kaiwhakamahi ki
  # $ taunoa_internal_tur.
  # Kaiwhakamahi = Root
  # Mena ka whakamahia te Proxy STRAX, me uru nga tukanga mēra ki tana turanga.
  # Hei tauira: Aratau = 0660, Rōpū = Vmail me te AoCaccess_groups = vmail
    # Aratau = 0600
    # kaiwhakamahi =
    # Rōpū =

Ano ano, kia whakatika ki te whakakapi i te rohe i roto i enei konae katoa, femmebabe.com, me te rohe i tohua e koe. Whakatika i te konae i muri, ko te config a Dovecot,

nano config/etc_dovecot_dovecot

Ka taapirihia enei raina

## Kōnae Whirihoranga Dovecot
# Mena kei te tere koe, tirohia te http://wiki2.dovecot.org/quickConfiguration
# "Doveconf -N" ka puta he whakaputanga o nga tautuhinga rereke. Whakamahia
# Engari ki te kape me te paraihe i nga konae ka tukuna ki te raarangi mēra a Dovecot.
# '# 'Te ahua me nga mea katoa i muri i te wa e whakaarohia ana hei korero. Nga waahi taapiri
# me nga ripa e warewarehia. Mena kei te hiahia koe ki te whakamahi i tetahi o enei mea, makahia te
# value inside quotes, eg.: key = "# te char me te momo whitespace "
# Ko te nuinga (engari kaore i te katoa) ka taea te whakakii i nga kawa rereke me / ranei
# Pūtake / Takiwa Ips mā te tuku i ngā tautuhinga ki roto i nga waahanga, hei tauira:
# Kawa IMAP {}, 127.0.0.1 {}, tawhiti 10.0.0.0.0/8 {}
# Kei te whakaatuhia nga uara taunoa mo ia waahi, kaore e hiahiatia ana ki te kore korero
# ērā. He mea whakawetiweti enei ki tenei ahakoa: Kaore he waahanga (e.g. ingoa ingoa}
# Ko nga tautuhinga plugin ranei ka taapirihia ma te taunoa, kua tohua noa iho hei tauira.
# Ko nga huarahi ko nga tauira noa iho me nga tauwehe tuuturu e ahu mai ana i te whirihora
# Kōwhiringa. Ko nga huarahi kua tohua i konei mo te Whirihorahia --Prefix = / USR
# --Sysconfdiir = / etc --localstated = / var
# Whakahohe i nga tikanga whakairi
# He raarangi wehe o te IPS, nga mano ranei kei hea te whakarongo ki nga hononga.
# "*" Whakarongo ki nga atanga IPv4 katoa, "::" Whakarongo ki nga hononga IPv6 katoa.
# Mena kei te hiahia koe ki te tautuhi i nga tauranga kore-taunoa, he uaua ake ranei,
# Whakatika Conf.D / Master.conf.
# Whakarongo = *, ::
# Whaiaronga turanga kei hea te penapena i nga Raraunga Raraunga.
# Base_Dir = / Var / Run / Dovecot /
# Ingoa o tenei tauira. I roto i te waa mahi whakariterite me etahi atu whakahau
# Ka taea te whakamahi -i <Instance_name> kia tohua ai te tauira (he rereke ke
# ki -c <config_path>). Ka taapirihia te ingoa tauira ki nga mahinga Dovecot
# I roto i te PS PS.
# instance_name = dovecot
# He panui mo nga kiritaki.
# Takiuru_greeting = Ka rite te Dovecot.
# Raarangi kua wehea nga raarangi mo te whatunga tuuturu. Nga hononga mai i enei
# Ka whakaaetia a IPS ki te aukati i o raatau wahitau IP me nga tauranga (mo te takiuru me te
# Mo nga huringa whakamana). Ka whakakorehia te whakakorekore
# enei whatunga. Ko te tikanga ka tohua e koe o hoa kaituku takawaenga IMAP i konei.
# takiuru_TRADED_NETWorks =
# Raarangi kua wehea te raarangi mo nga turanga whakauru whakauru whakauru (e.g. TCPWRAP)
# takiuru_access_sockes =
# Me te proxy_maybe = Ae mena ka uru te Takawaenga ki tetahi o enei IP, kaua e mahi
# Tuhinga o mua. Ehara tenei i te mea tika, engari ka whai hua pea mena he haerenga
# IP ko E.g. He IP o te Kaipupuri Utu.
# auth_proxy_ftul =
# Whakaaturia mai etahi atu taitara tukatuka (i te PS). I tenei wa ka whakaatu i te ingoa kaiwhakamahi me te
# Wāhitau IP. Whai hua mo te kitenga ko wai te mea e whakamahi ana i nga tikanga IMAP
# .
# verbose_proctitle = no
# Mena ka patua nga tukanga katoa ina kohia te mahi a Dovecot Street.
# Te whakatakoto i tenei ki "Kaore" te tikanga ka taea te whakahou i te mahi ki te kore
# te akiaki i nga hononga kiritaki kei te kati (ahakoa ka taea hoki
# He raru mehemea ko te whakahoutanga ko E.g. na te mea he whakatika haumaru).
# tutakina_clients = ae
# Ki te kore-Zero, Whakahaerehia nga whakahau mēra ma tenei maha hononga ki te kaituku mahi DoveAdm,
# Engari ki te rere tika i roto i te kaupapa kotahi.
# doveadm_worker_count = 0
# UnIX Kaupae ranei te Kaihauturu: Port i whakamahia mo te hono ki te tūmau DoveAdm
# doveadm_socket_path = doveadm-tūmau
# Raarangi kua wehea nga raarangi o nga taurangi taiao e tiakina ana i runga i te Dovecot
# Ka tiimata ka tukuna ki nga mahi katoa o ana tamariki. Ka taea hoki te hoatu
# KEY = uara takirua ki te whakarite i nga tautuhinga motuhake.
# intrit_environment = tz
## 
## Tautuhinga Tūmau Tūmau
## 
# Ka taea te whakamahi i te papakupu ki te rokiroki i nga raarangi = raarangi uara. Ka whakamahia tenei e te maha
# Mono. Ka taea te whakawhiti i te papakupu ki te tika, ahakoa ranei
# Tūmau Papakupu. Ko nga tuhinga e whai ake nei e whai ake nei me nga ingoa papakupu Mahere ki te uris
# Ka whakamahia te tūmau. Ka taea e enei te whakahuahia ma te whakamahi i te URIS i te whakatakotoranga
# "Takawaenga :: ingoa>".
  # Quota = mysql: /etc/dovecot/dovecot-pter-sql.confl.conf.ox.ixt
# Ko te nuinga o te whirihoranga tuuturu kei roto i raro. Ko nga ingoa ingoa
# tuatahi i whakaritea e te uara ASCI ASCII ka tuhia i roto i taua ota. Nga 00-mua
# I roto i nga ingoa ingoa e kii ana kia ngawari ake te maarama ki te ota.
# Ka taea e te konae whirihoranga te whakauru kia kore e tukuna he hapa mena mena
# Kaore i kitea:
# Ka taea e Dovocot te whakarongo ki nga hononga whakauru katoa (IPV4 / IPV6)

Tāpirihia he kupuhipa mo te Kaiwhakamahi Dovecot:

nano config/etc_dovecot_passwd

Ko te waahanga tuatahi o te konae, i mua o te kopae, ko te ingoa ingoa. Ko te waahanga whakamutunga, "Ko te kupu hou", e tohu ana i te kupu huna e hiahia ana koe ki te tuku i to raarangi mēra.

team:{plain}yourpassword

Panuku, ko te Config

nano config/etc_opendkim.conf

Ka tapiritia enei raina:

# He whirihoranga taketake tenei mo te haina me te whakaū. Ka taea te ngawari
# I whakarite kia rite ki te whakaurunga taketake. Tirohia te Opendkim.conf (5) me
# /Srr/share/doc/opendkim/examples/opendkim.comef.sample for oti
# Tuhinga o nga rarangi whirihoranga e waatea ana.
# Loghu kore
# Nga tohu haina me te hainatanga. I roto i te Debian, ko te "" ko te upoko
# kua tirotirohia, no te mea ko te nuinga o te wa e whakamahia ana e te mana tuakiri e nga punaha ingoa
# Na ko te mea he taapiri te hunga noho.
# Te haina rohe, te kaituku, me te matua (hiahiatia). Hei tauira, mahi haina
# Mo nga rohe "Tauira.com" me te Kaiwhakaako "2020" (2020._domainkey.example.com),
# Ma te whakamahi i te kī tūmataiti kua penapena i roto i /etc/dkimkeys/example.private. He nui ake
# Ka kitea nga whiringa tatūnga i roto i /usr/share/doc/opendkim/Deademe.Opendkim.
# Ingoa Rotoru.com
# Kaipupuri 2020
# Keyfile /etc/dkimkey/example.private
# I roto i te Debian, ka rere te opendkim hei "Roockom". He Usmark o 007 e hiahiatia ana
# Ma te whakamahi i te turanga o te rohe me te MTA e uru ana ki te turanga hei kore utu
# Kaiwhakamahi (hei tauira, postfix). Ka hiahia pea koe ki te taapiri i te Kaiwhakamahi "PostFix" ki te roopu
# "Occetndkim" i tera keehi.
# Ko te turanga mo te Mta Hononga (hiahiatia). Mena kei roto i te whare herehere te Mta,
# Me whakarite kia uru te turanga. I roto i te Debian, ka rere te postfix
# he choot i / var / spool / postfix, no reira ko te turanga UNIX e tika ana
# Whiriwhiria kia rite ki te whakaatu i te raina whakamutunga i raro nei.
# Tapahia te rohe: /run/opendkim/opendkim.Sock
# Tapanga INT: 8891 @ localhost
# INFERET: 8891
# Nga Kaihauturu mo te tohu ki te haina, kaua ki te manatoko, ko te taunoa he 127.0.0.1. Tirohia te
# Wāhanga o te Opcetndkim (8) Mo etahi atu korero.
# Intonashost 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0.0.0.0.0.0.0.0
# Ko te Anchor Trust e whakahohe ana i te DNSSEC. I te Debian, ka whakaratohia te Kōnae Achor Thechor
# Na te kohinga DNS-Root-raraunga.
# Nameservers 127.0.0.1
# Nga rohe mahere mai i nga wahitau ki nga kiki i whakamahia hei haina i nga karere
# He huinga o nga kaiwhakarato o roto e hainatia ana e ia
nano config/etc_default_opendkim

Ka taapirihia enei raina

# FAKATOKANGA: Ko te konae whirihoranga tuku iho. Kaore i te whakamahia e te o te actndkim
# ratonga pūnaha. Whakamahi koa nga tohu whirihoranga e rite ana ki
# /etc/opendkim.conf hei utu.
# 
# I mua, ka whakatika tetahi i nga tautuhinga taunoa i konei, ka mahia
# /Lib/opendkim/opendkim.service.generate ki te whakaputa i nga konae kei te huri i nga konae i
# /etc/systemd/system/sopendkim.service.d/override.conf and
# /etc/tmpfiles.d/opendkim.conf. Ahakoa e taea tonu tenei, inaianei
# tūtohutia kia whakatika tika i nga tautuhinga i roto i /etc/opendkim.conf.
# 
# Daemon_opts = ""
# Hurihia ki te / var / spool / postfix / Whakahaere / RunNndkim ki te whakamahi i te turanga UNIX me
# Putea i roto i te kohukohu:
# Rundir = / var / spool / Pousfix / Whakahaere / RoroNndkim
# 
# Te take ki te tautuhi i tetahi turanga whakakapi
# Kia mahara ko te whakatakoto i tenei ka pakaru tetahi uara tika i roto i te ocking.conf
# taunoa:
# Whakarongo ki nga hononga katoa i te tauranga 54321:
# Patu = Inet: 54321
# Whakarongo ki te Loopback i te tauranga 12345:
# Paka = INT: 12345 @ localhost
# Whakarongo i te 192.0.2.1 i Port 12345:
# Paka = Inet: 12345@192.0.2.1

I te wa e rite ana matou ki te whakatu i to maatau tūmau pou, ka whakahaerehia e matou te waehere i raro nei, me te ingoa rohe e tika ana. Tīmata mā te hanga tuhinga

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

Na, i Nano, te ētita kuputuhi, whakatika i tenei kōnae na reira kei roto i to ingoa rohe hei utu mo Femmebabe.com.

# ! / bin / bash
# Tautuhi Whakaata

Na, rere atu te tuhinga kua oti te whakarite ki te whirihora i te pou o te pou, te acvendkim me te dovecot.

./scripts/postfixsetup

Ina eke tenei tuhinga, kape i te raina whakamutunga ka taea te tuhi me te whakapiri ki to whirihoranga DNS hei uara mo te haangai._domainkey. Koinei te kī o te ockim e whakamahia ana hei tautuhi i to rohe i te wa e tuku ana i te mēra haumaru.

Whakamataku! I roto i nga ra torutoru, me tuku e koe te tuku mēra mai i te kaituku i tukuna tika nga mea katoa.

Mena i whiriwhiria e koe te DNS mo to kaiwhakarato mēra, me iti iho i te 72 haora mo nga rekoata hei whakahou. Ko te tikanga ka tere ake. Ka taea e koe te tirotiro mehemea kei te mahi to kaitono ma te whakamahi i tenei whakahau, i tukuna mai to imeera:

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

Mena ka puta tika nga mea katoa, me tuku e koe te imeera me to kaitoro. Mena kaore e mahi, ngana ki te tiro i nga raarangi kia kite ai he aha te he.

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

Ma tenei ka tukuna he korero korero mo te mēra e tukuna ana e te kaituku me te mahi tika ranei. Kia taea e koe te kite i te imeera i roto i to pouaka pouaka, mena kaore i reira, tirohia to kōpaki SPAM.

Ka hiahia hoki koe ki te whirihora i o tautuhinga i roto i o Tautuhinga.Py kia taea ai e to kaituku imeera te korero ki to taupānga Django, te kaupapa. Tāpirihia, whakakapi ranei i enei raina ki o tautuhinga

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

Kia mahara kei te whakamahi matou i tetahi konae whirihora kia whiwhi ai i te kupuhipa. Kia utaina tenei konae i roto i nga tautuhinga penei, i te timatanga o te konae .:

# Whakatuwheratia me te utaina ranei

Hangaia tenei konae me te taapiri i tetahi tohu huna ki reira, me te kupuhipa mēra. Hei whakaputa i tetahi tohu huna, whakamahia tenei whakahau, me nga mea roa e rite ana ki a koe i te mutunga:

openssl rand -base64 64

Na, Tāruahia te kuputuhi e hangaia ana e OpenSL me te whakatika /etc/config.json

sudo nano /etc/config.json

Tāpirihia nga raina e whai ake nei ki to konae, me te kī e OpenSL i puta ko te mea huna.

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

He ngawari, he ngawari hoki te whakamahi, ka taea e maatau etahi atu taviri e hiahia ana matou ki te whakamahi i to maatau kaupapa kaupapa kia kore ai e taea te panui ki a raatau anake. Ko te tikanga e taunakitia ana mo nga mahi api, ka nui ake ta matou whakamahi i etahi atu mea i konei.

Ka hiahia hoki koe ki te whakahoki i to kaupapa kia ora ai nga mea katoa ka taea e koe te whakaora i o mahi i muri mai ahakoa kaore koe e hiahia ki te riihi i tetahi kaituku.

sudo backup

Na, me whakamatau kia tukuna mai he imeera HTML mai i te kaituku Tukutuku, i tukuna mai i te tono kotahi mai i te raina whakahau kei te mahi. Tonoa to tauira kaiwhakamahi i roto i te anga, ka tukuna he imeera HTML ki taua kaiwhakamahi ma Django. Hurihia toku ingoa ki te waehere, Charlotte, ki to ingoa ingoa.

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()

Ki te kore e mahi te whakahau tuatahi, kia pai te whakamahi

source venv/bin/activate

I te mea ka whakatauhia nga mea katoa, ka whiwhi koe i te imeera mai i to pouaka pouaka i tukuna e to paetukutuku taupānga. Mahi pai! Kua roa kua tae mai koe.

I hiahia ahau ki te taapiri, mena kei te raru koe ki nga hapa katoa i te wa e mahi ana i runga i te kaupapa penei, kaua e mangere ki te rapu whakautu. Ko Google, i roto i etahi atu miihini rapu, he rauemi nui hei rapu mo te awhina i te papatono. Rapua te hapa mo te hapa kei te whiwhi koe, ka taea e koe te kite he pehea te whakatau a etahi atu i te raru. Ano hoki, Tena koe ki te whakapiri mai ki a au, kaiako, kaiwhakaako, kaiwhakaako), ki te korero ano i tenei pukapuka, ki etahi atu rauemi ranei e kitea ana e koe. Kei te mohio ahau ehara i te mea ngawari, engari ahakoa kua panui koe i tenei wa kaore ano kia tuhia he tohu, he maha nga akoranga e ako ana koe i te taupānga paetukutuku mai i te Tukutuku. Patua koe i runga i te tuara, kei te mahi koe i tetahi mahi nui.

Mauruuru koe mo te tango i te waa ki te panui i tenei aratohu whanaketanga Tukutuku tuatoru. I nga waahanga heke mai, ka uru atu ahau ki etahi atu tauira nui i korerohia i te timatanga o te tuhinga ka rukuhia e matou te hohonu ki te ao o te rorohiko me te whanaketanga taputapu. Me noho tonu mo nga mea e haere mai ana, ka titiro whakamua ahau ki te ako ki a koe me pehea te hanga i nga mahi kino. Ka kite koe i te putanga o muri!






Whakapā
Whārangi 1
Pēke
Tirohia te tuhinga katoa
Haere tonu te panui

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency



Three Thirteen Online Free Play three thirteen online for free. Invite a Friend Join a Game ***.
Hokina

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


Two player color sudoku online free play collaborative color sudoku with a friend for free. Invite a Friend Join a Game ***.
Hokina

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency



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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency



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.

.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


Hokina

mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency


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.


mā Daisy / Kitenga | Hoko | Hokona me Cryptocurrency




https://glamgirlx.com -


(Paatohia, pato ranei ki te tango whakaahua)
Ko nga whakangahau ngaio, whakaahua, ataata, ataata, oro, me te taakaro, me te whakaari i te ID, me te whanaketanga tukutuku me nga ratonga whakangao.

Waiho i te matamata i Bitcoin ma te whakamahi i tenei wahitau: 3KhDWoSve2N627RiW8grj6XrsoPT7d6qyE

© Glam Girl X 2025

Nga tikanga o te Ratonga