<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Elizabeth Ng'ang'a</title>
    <description>The latest articles on Forem by Elizabeth Ng'ang'a (@1303liz).</description>
    <link>https://forem.com/1303liz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3288110%2F859f9543-55ad-4275-854d-f676745b198b.png</url>
      <title>Forem: Elizabeth Ng'ang'a</title>
      <link>https://forem.com/1303liz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/1303liz"/>
    <language>en</language>
    <item>
      <title>A Django-Based Account Management System</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Mon, 07 Jul 2025 14:59:01 +0000</pubDate>
      <link>https://forem.com/1303liz/a-django-based-account-management-system-31eo</link>
      <guid>https://forem.com/1303liz/a-django-based-account-management-system-31eo</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing user accounts is a core feature of most web applications from login and registration to profile updates and admin controls. In this article, I’ll walk you through how I built User_managment, a simple user management system using Django. This project supports registration, profile editing, and an admin dashboard, with everything tracked on GitHub and tested through unit tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1.Project Goals&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Here is a brief list of what the project was expected to do;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User registration and login&lt;/li&gt;
&lt;li&gt;Profile management&lt;/li&gt;
&lt;li&gt;Admin features&lt;/li&gt;
&lt;li&gt;Unit tests&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2.Tools &amp;amp; Technologies&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Django 5.2.4&lt;/li&gt;
&lt;li&gt;Python 3.13.3&lt;/li&gt;
&lt;li&gt;HTML/CSS (basic styling)&lt;/li&gt;
&lt;li&gt;Git &amp;amp; GitHub&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3.Project Setup&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I had to create and activte my vitual enviroment before i started my project using;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Activating&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;venv&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I started my project using;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;django-admin startproject user_managment
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I later started my app&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py startapp user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;4.How I set up URLs, templates, static files, and database.&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Urls&lt;/strong&gt;&lt;br&gt;
The project uses Django’s URL routing system to direct users to different pages like registration, login, profile, and admin. We defined routes in both the project-level urls.py and the app-level urls.py inside the accounts app for better organization.&lt;br&gt;
Key paths include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;/register/ – User registration page&lt;/li&gt;
&lt;li&gt;/login/ – Login page&lt;/li&gt;
&lt;li&gt;/profile/ – User profile view/edit&lt;/li&gt;
&lt;li&gt;/admin/ – Django admin panel
Below is a screenshot of the URL configuration:
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftj86otrl1ssma14ngki2.png" alt="urls" width="800" height="520"&gt;
&lt;strong&gt;Templates&lt;/strong&gt;
The project uses Django’s template system to render HTML pages for user interaction. Each view (like registration, login, and profile) has a corresponding HTML template stored inside a templates/accounts/ directory.
Below is a screenshot of the template folder structure:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyr2n63vbqelw3x723kf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuyr2n63vbqelw3x723kf.png" alt="template" width="800" height="536"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Features in Detail&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;_ User Registration_&lt;/strong&gt;&lt;br&gt;
The project allows new users to create an account using a registration form. The form collects basic details like username, email, and password.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqokxmqovl823206cif9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnqokxmqovl823206cif9.png" alt="Regration" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Profile Management (view, edit, change password)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;helps  the user to update there names change password and add photos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqisynsi5fz1c765bxj0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdqisynsi5fz1c765bxj0.png" alt="profile" width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Admin Panel (manage users)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The project leverages Django’s built-in admin interface to allow superusers to manage registered users. Through the admin panel, the admin can view all users, edit their details, reset passwords, or deactivate accounts. This interface is secured and only accessible to authenticated staff or superusers.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6pcho16p3d11i7vth48.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj6pcho16p3d11i7vth48.png" alt="admin" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Testing&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Django comes with a built-in testing framework based on Python’s unittest module. It allows you to write tests for your models, views, and forms to ensure your application works as expected. In this project, basic unit tests were written to check user creation, profile view access, and form validations.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vfmrcpus35tzp4tqw8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vfmrcpus35tzp4tqw8g.png" alt="test" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Git Workflow&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;After all this i had to commit all my changes and the push my codes.&lt;br&gt;
Here is a screenshoot of my commits;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcekty6pbek11s2wzfcq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcekty6pbek11s2wzfcq6.png" alt="commits" width="800" height="520"&gt;&lt;/a&gt;&lt;br&gt;
Here is a link to my repository;&lt;br&gt;
[(&lt;a href="https://github.com/1303liz/managment)" rel="noopener noreferrer"&gt;https://github.com/1303liz/managment)&lt;/a&gt;]&lt;/p&gt;

&lt;h2&gt;
  
  
  Deployment process
&lt;/h2&gt;

&lt;p&gt;I used railways to deploy my final project here is the link to my deployed project;&lt;br&gt;
[(&lt;a href="https://managment-production.up.railway.app/)" rel="noopener noreferrer"&gt;https://managment-production.up.railway.app/)&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4cea9peb3rd353nlxik.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe4cea9peb3rd353nlxik.png" alt=" " width="800" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  challanges faced
&lt;/h2&gt;

&lt;p&gt;Had a challange during the verification process, and also during the deployment process.&lt;br&gt;
 ## Lessons Learned&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Django views/forms&lt;/li&gt;
&lt;li&gt;Auth system&lt;/li&gt;
&lt;li&gt;Writing better commits&lt;/li&gt;
&lt;li&gt;Writing reusable code&lt;/li&gt;
&lt;li&gt;Importance of testing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;final thoughts&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Building this Django-based user management system was a valuable learning experience. It gave me a practical understanding of how to implement core authentication features such as user registration, login, profile management, and admin control all essential components of most real-world web applications.&lt;br&gt;
Throughout the project, I explored Django's powerful tools like the built-in User model, form handling, the admin interface, and unit testing framework. Writing clean code, following Git best practices with clear commits, and documenting the project helped me structure my development process more effectively.&lt;br&gt;
Although some features like email verification were mocked, the project still simulates a complete flow, from account creation to profile editing and admin oversight. Time constraints made deployment and Docker setup optional, but those remain exciting areas for future improvement.&lt;br&gt;
Overall, this project not only strengthened my Django skills but also deepened my appreciation for well-organized, testable, and user-focused web development.&lt;/p&gt;

</description>
      <category>django</category>
      <category>github</category>
      <category>git</category>
      <category>programming</category>
    </item>
    <item>
      <title>Ultimate Guide to Django Models</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Wed, 02 Jul 2025 19:01:04 +0000</pubDate>
      <link>https://forem.com/1303liz/ultimate-guide-to-django-models-4ca6</link>
      <guid>https://forem.com/1303liz/ultimate-guide-to-django-models-4ca6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In Django, Models are the single, definitive source of truth about your data. They define the structure of your database by mapping Python classes to database tables. Django models are part of the Model-View-Template (MVT) architecture, playing the "Model" role.&lt;br&gt;
&lt;strong&gt;What is a Django Model?&lt;/strong&gt;&lt;br&gt;
A Django model is a Python class that inherits from django.db.models.Model. Each attribute in the class represents a field in the database table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;from django.db import models

class Book&lt;span class="o"&gt;(&lt;/span&gt;models.Model&lt;span class="o"&gt;)&lt;/span&gt;:
    title &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;200&lt;span class="o"&gt;)&lt;/span&gt;
    author &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100&lt;span class="o"&gt;)&lt;/span&gt;
    published_date &lt;span class="o"&gt;=&lt;/span&gt; models.DateField&lt;span class="o"&gt;()&lt;/span&gt;
    isbn &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will generate a table in the database with columns: id, title, author, published_date, and isbn.&lt;br&gt;
&lt;strong&gt;Meta Class – Model Configuration&lt;/strong&gt;&lt;br&gt;
The Meta class allows you to configure behavior of your model:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;class Book&lt;span class="o"&gt;(&lt;/span&gt;models.Model&lt;span class="o"&gt;)&lt;/span&gt;:
    title &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;200&lt;span class="o"&gt;)&lt;/span&gt;

    class Meta:
        ordering &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'title'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;  &lt;span class="c"&gt;# Default ordering&lt;/span&gt;
        verbose_name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Book"&lt;/span&gt;
        verbose_name_plural &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Books"&lt;/span&gt;
        db_table &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'library_books'&lt;/span&gt;  &lt;span class="c"&gt;# Custom table name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Model Methods&lt;/strong&gt;&lt;br&gt;
You can define custom methods inside models to add behavior:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;class Book&lt;span class="o"&gt;(&lt;/span&gt;models.Model&lt;span class="o"&gt;)&lt;/span&gt;:
    title &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;200&lt;span class="o"&gt;)&lt;/span&gt;
    author &lt;span class="o"&gt;=&lt;/span&gt; models.CharField&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100&lt;span class="o"&gt;)&lt;/span&gt;

    def __str__&lt;span class="o"&gt;(&lt;/span&gt;self&lt;span class="o"&gt;)&lt;/span&gt;:
        &lt;span class="k"&gt;return &lt;/span&gt;f&lt;span class="s2"&gt;"{self.title} by {self.author}"&lt;/span&gt;

    def get_author_uppercase&lt;span class="o"&gt;(&lt;/span&gt;self&lt;span class="o"&gt;)&lt;/span&gt;:
        &lt;span class="k"&gt;return &lt;/span&gt;self.author.upper&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example of my model data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futma8qa4n64hwtp8ijyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futma8qa4n64hwtp8ijyu.png" alt="Model" width="800" height="649"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;CRUD Operations with Models&lt;/strong&gt;&lt;br&gt;
1.Create – Adding a New Record&lt;br&gt;
2.Read – Retrieving Records&lt;br&gt;
3.Update – Changing Existing Data&lt;br&gt;
4.Delete – Removing a Record&lt;br&gt;
** Model Validation**&lt;br&gt;
Use clean() or full_clean() to enforce custom validations.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;def clean&lt;span class="o"&gt;(&lt;/span&gt;self&lt;span class="o"&gt;)&lt;/span&gt;:
    &lt;span class="k"&gt;if &lt;/span&gt;self.published_date &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; timezone.now&lt;span class="o"&gt;()&lt;/span&gt;.date&lt;span class="o"&gt;()&lt;/span&gt;:
        raise ValidationError&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Publish date cannot be in the future."&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Advanced Model Features&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Custom Managers&lt;/em&gt;&lt;br&gt;
it is created by definining a custom manager by subclassing models.Manager.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjowya0qft3n58z7yldf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhjowya0qft3n58z7yldf.png" alt="manager" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Model Inheritance&lt;/em&gt;&lt;br&gt;
 A powerful feature that allows you to reuse common fields or logic across multiple models.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F896wsqmesc0wqpycs2hf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F896wsqmesc0wqpycs2hf.png" alt="Inheritance" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Django Models are the backbone of any Django project. They offer a rich, declarative, and powerful way to define, query, and manage your database schema all in clean Python code. Understanding how models work is essential for any Django developer building robust, scalable web applications.&lt;/p&gt;

</description>
      <category>django</category>
      <category>models</category>
      <category>mvt</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Understanding and implementing the MVT/MVC Architecture in Django.</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Tue, 01 Jul 2025 17:26:01 +0000</pubDate>
      <link>https://forem.com/1303liz/understanding-and-implementing-the-mvtmvc-architecture-in-django-jmp</link>
      <guid>https://forem.com/1303liz/understanding-and-implementing-the-mvtmvc-architecture-in-django-jmp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction.
&lt;/h2&gt;

&lt;p&gt;Modern web applications rely on structured design patterns to stay organized and efficient. One of the most popular patterns is the Model-View-Controller (MVC) architecture, which separates an application into three key components: data (Model), logic (Controller), and user interface (View). Django, a powerful Python web framework, follows a similar pattern called Model-View-Template (MVT). While slightly different in naming, MVT serves the same purpose helping developers manage complex applications by keeping code clean, scalable, and easy to maintain.&lt;/p&gt;

&lt;h2&gt;
  
  
  (MVC)Model-View-Controller
&lt;/h2&gt;

&lt;p&gt;It is a software design pattern used to separate an application into three main parts. This structure makes web development more organized and easier to manage, especially in large projects.&lt;br&gt;
&lt;strong&gt;short description of the 3&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model
it basically stores and manages data and also connects directly to the database.&lt;/li&gt;
&lt;li&gt;View
it mainly handles what the user sees and displays data from the model.&lt;/li&gt;
&lt;li&gt;controller
mainly shows the user actions and logic and connects the model and the view.
That is a short description of each.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  (MVT)Model-View-Template
&lt;/h2&gt;

&lt;p&gt;it helps developers manage complex applications by keeping code clean.&lt;br&gt;
&lt;strong&gt;short description of the 3&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Model
Handles the data and database structure.&lt;/li&gt;
&lt;li&gt;View
Contains the logic fetches data from the model and passes it to the template.&lt;/li&gt;
&lt;li&gt;Template
Handles the presentation ,displays data to the user using HTML.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Here is an Example from my Waste Sorter project
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Models&lt;/strong&gt;&lt;br&gt;
This is where i defined the data for my two apps in the project&lt;br&gt;
&lt;em&gt;Example of the data i added for the 1st app recycle_tips;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov3ev4g53rys2fcprjb3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov3ev4g53rys2fcprjb3.png" alt="Models-recycle tips" width="800" height="596"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Example of the data i added for the 2nd app waste-logs&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgbx84no260lkl2apj8v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqgbx84no260lkl2apj8v.png" alt="Models-waste_logs" width="800" height="596"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Making migrations&lt;/strong&gt;&lt;br&gt;
 &lt;em&gt;makemigrations&lt;/em&gt;&lt;br&gt;
After creating the models,this command tells Django to look at your models and check if anything changed (like added fields, new models, or edits).It then creates a file called a migration file which is basically a set of instructions telling Django how to update the database structure.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here is the code used&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py makemigrations
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;migrate&lt;/em&gt;&lt;br&gt;
This command takes the instructions from the migration file created and actually applies them to your database like creating tables or changing columns.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here is the code&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py migrate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Editing the view.py ,forms and the Template folder.
&lt;/h2&gt;

&lt;p&gt;After i added the changes to my model and migrated them i had to make my view ,form and templates match with the data added in the models.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;views look after editing my models&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrjcb3nl2lj4jsmzd8cs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgrjcb3nl2lj4jsmzd8cs.png" alt="views" width="800" height="524"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Forms&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
I had to create a file by the name"form.py".Its importance is to help import the form  classes (like WasteLogForm) inside this file, and then import them in your views as shown in your code.&lt;br&gt;
&lt;em&gt;Example&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsf745aqe24cnwm2c1g7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdsf745aqe24cnwm2c1g7.png" alt="form" width="800" height="470"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Templates&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
I had to update my existing html file under the Templates folder so that they can meet my models requirement.&lt;br&gt;
&lt;em&gt;Example&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8txcskdllbzyrdrmo9ew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8txcskdllbzyrdrmo9ew.png" alt="Template" width="800" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After making this changes on the views ,forms and the Template  there is no need for you to make migrations.You can know test you project using;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;Here is my output&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp5omnd5xxq8578tc5v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flp5omnd5xxq8578tc5v2.png" alt="output1" width="541" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohx7s4bcor0p78i4mgd4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fohx7s4bcor0p78i4mgd4.png" alt="output2" width="550" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Models, Views, Templates, and URLs Work Together
&lt;/h2&gt;

&lt;p&gt;Here is a short description of how i understood.&lt;/p&gt;

&lt;p&gt;we as the user makes request → a URL directs it → View processes → Model fetches data → Template displays it.&lt;br&gt;
you can also follow this and listen for more understanding[(&lt;a href="https://www.youtube.com/watch?v=cyP4Uw2b2XM)" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=cyP4Uw2b2XM)&lt;/a&gt;]&lt;br&gt;
&lt;strong&gt;Final thoughts&lt;/strong&gt;&lt;br&gt;
Understanding the MVC and MVT architecture is key to building clean and well-organized web applications. While MVC is a general pattern used in many frameworks, Django uses MVT, which works in a similar way just with different naming.&lt;br&gt;
In Django:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Model handles your data,&lt;/li&gt;
&lt;li&gt;The View processes the logic,&lt;/li&gt;
&lt;li&gt;And the Template displays the result to the user.
We also explored how Django’s commands like makemigrations and migrate help us apply changes to the database, and how forms, views, and templates bring everything to life on the web page.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>models</category>
      <category>django</category>
      <category>mvc</category>
      <category>mvt</category>
    </item>
    <item>
      <title>Getting started with Django project</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Mon, 30 Jun 2025 18:01:46 +0000</pubDate>
      <link>https://forem.com/1303liz/getting-started-with-django-project-3d3m</link>
      <guid>https://forem.com/1303liz/getting-started-with-django-project-3d3m</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Django is a robust and versatile Python framework designed to simplify web development. However, how you start your Django project can significantly impact its scalability, maintainability, and performance. This guide provides a comprehensive, step-by-step walkthrough to help you start your Django project the right way, ensuring a solid foundation for success and also tries to explain the project settings and configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Django Project Structure
&lt;/h2&gt;

&lt;p&gt;project structure in django is designed to support the Model-View-Template (MVT) architectural pattern, which is Django’s version of the traditional Model-View-Controller (MVC) framework.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1
&lt;/h3&gt;

&lt;p&gt;I created a folder on my desktop to hold my project and named it "WASTE SOTOR".&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2
&lt;/h3&gt;

&lt;p&gt;I create a virtual enviroment, since am on windows i used,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv &lt;span class="nb"&gt;env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a folder named env that will store all project-specific Python packages. &lt;br&gt;
Later i had to activate the enviroment using;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;env&lt;/span&gt;&lt;span class="se"&gt;\S&lt;/span&gt;cripts&lt;span class="se"&gt;\a&lt;/span&gt;ctivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is an image after i have created and activated the virtual enviroment it created a folder named env.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhpu5izo0plsp7mrnwpq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhpu5izo0plsp7mrnwpq.png" alt="env setup" width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Step 4
&lt;/h4&gt;

&lt;p&gt;Install Django&lt;br&gt;
I used;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;django
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is are the folders that are created after installing Django, they are created on the env folder.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpymq9dg51fhar52rbh9s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpymq9dg51fhar52rbh9s.png" alt="django installation" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Step 5
&lt;/h4&gt;

&lt;p&gt;Start a project&lt;br&gt;
I used this since i wanted my project to be called waste_sorter ;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;django-admin startproject waste_sorter &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This are the project settings and configurations installed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0y4r3sclsjnhgu2ths8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb0y4r3sclsjnhgu2ths8.png" alt="Image description" width="800" height="423"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;checking if my project was working&lt;/strong&gt;&lt;br&gt;
I had to run my project using;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;follow the link provide and you should see this;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffym50wzquvg52okvnhxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffym50wzquvg52okvnhxl.png" alt="Image description" width="649" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.init.py- Makes the folder a Python package .&lt;br&gt;
2.settings.py-Contains all configurations: database, apps, templates, static files, etc.&lt;br&gt;
3.urls.py-Controls which page shows whatand also connects URLs to views.&lt;br&gt;
4.asgi.py-Used for advanced or real-time features and also handles asynchronous requests.&lt;br&gt;
5.wsgi.py-Used to connect Django to a web server and handles normal (synchronous) requests.&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 6
&lt;/h3&gt;

&lt;p&gt;In this case i started my app and i had 2 of them  using  the command;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py startapp app_name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here is an image both apps i created;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34tzplp24urhcboxoadq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F34tzplp24urhcboxoadq.png" alt="app" width="800" height="633"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;short description of the Django App Components&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;admin.py: Configuration for the Django admin interface.&lt;/li&gt;
&lt;li&gt;apps.py: Configuration for the app itself.&lt;/li&gt;
&lt;li&gt; models.py: Contains the database models for the app.&lt;/li&gt;
&lt;li&gt;tests.py: Contains tests for the app.&lt;/li&gt;
&lt;li&gt;views.py: Contains the request/response logic for the app.&lt;/li&gt;
&lt;li&gt;migrations/: Contains database migrations for the app.
&lt;strong&gt;Registered the apps&lt;/strong&gt;
so that my apps could be recognized ,i opened the settings.py and added the apps on the INSTALLED_APPS.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzggmjzz18rrh0yp2nsr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzggmjzz18rrh0yp2nsr4.png" alt="Image description" width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  writing views and creating urls
&lt;/h2&gt;

&lt;p&gt;this are the codes that i wrote, i had two since the apps are two;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkdpf3de6ibnmdxh6wfrf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkdpf3de6ibnmdxh6wfrf.png" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq9i6t4hfq3cx7xn9ldf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpq9i6t4hfq3cx7xn9ldf.png" alt="Image description" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 7 created Urls for both apps
&lt;/h2&gt;

&lt;p&gt;I created new files and made them "urls.py" under each app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c1yx0p6olo0fe7hz6hn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9c1yx0p6olo0fe7hz6hn.png" alt="Image description" width="800" height="231"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;connecting both Urls&lt;/strong&gt;&lt;br&gt;
This is where i had to join bothof the urls that i created to the main project.&lt;br&gt;
This is what it looked like;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6uowviogcbsr5wil6tw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6uowviogcbsr5wil6tw.png" alt="Image description" width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  step 8
&lt;/h2&gt;

&lt;p&gt;Adding Templates &lt;br&gt;
This this the folder that shall be kholding all my pages.&lt;br&gt;
Example of one of my pages ;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xraf3ppcrxx7s7gmxxo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4xraf3ppcrxx7s7gmxxo.png" alt="Image description" width="800" height="406"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 9
&lt;/h2&gt;

&lt;p&gt;Checking if the project is Running ;&lt;br&gt;
i used the&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then follow the link to the browser .For me i got this;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx59r851trigq6qpfojf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx59r851trigq6qpfojf.png" alt="Image description" width="689" height="748"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Starting a Django project the right way sets the foundation for a scalable, maintainable, and efficient web application.The images and step-by-step instructions demonstrate how each component fits together, from the initial runserver check to rendering dynamic templates. Whether you’re building a simple app like "WASTE SOROR" or a complex system, Django’s flexibility and structure empower you to focus on functionality rather than boilerplate.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Git &amp; GitHub: A Beginner’s Guide to Collaboration and Version Control</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Thu, 26 Jun 2025 13:05:43 +0000</pubDate>
      <link>https://forem.com/1303liz/git-github-a-beginners-guide-to-collaboration-and-version-control-5fcj</link>
      <guid>https://forem.com/1303liz/git-github-a-beginners-guide-to-collaboration-and-version-control-5fcj</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
If you're just starting your journey into software development, you've probably heard about Git, version control and GitHub but what exactly are they, and why do developers swear by them?&lt;br&gt;
1.Git is a powerful version control system.&lt;br&gt;
2.version control means you can experiment, roll back mistakes, and collaborate with others without fear of losing work.&lt;br&gt;
3.GitHub is a platform built around Git to make collaboration easier.&lt;/p&gt;

&lt;p&gt;Together, they form the backbone of modern software development helping individuals and teams manage code, track changes, collaborate without chaos, and contribute to open-source projects.&lt;/p&gt;

&lt;p&gt;This guide will walk you through version control and the essentials of Git &amp;amp; GitHub, from forking a project to managing pull requests, resolving merge conflicts, and everything in between.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Version control&lt;/strong&gt;&lt;br&gt;
Version control is a system that records changes to files over time, so you can track what was changed, when, and by whom.&lt;/p&gt;

&lt;h1&gt;
  
  
  In software development
&lt;/h1&gt;

&lt;p&gt;it's used to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep a history of every code update&lt;/li&gt;
&lt;li&gt;Collaborate with others without overwriting each other’s work&lt;/li&gt;
&lt;li&gt;Revert to previous versions if something breaks.
Think of it like a time machine for your code allowing you to experiment freely while staying organized and in control.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Forking:Creating Your Own Copy
&lt;/h1&gt;

&lt;p&gt;Forking means creating your own copy of someone else’s repository on GitHub. You can make changes without affecting the original.&lt;br&gt;
&lt;strong&gt;why fork?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To contribute to open-source projects&lt;/li&gt;
&lt;li&gt;To use someone else’s code as a starting point.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frydxpo1r8v6aon1mnago.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frydxpo1r8v6aon1mnago.png" alt="Forking" width="800" height="346"&gt;&lt;/a&gt;&lt;br&gt;
You click the button written Fork.&lt;/p&gt;

&lt;h1&gt;
  
  
  Collaboration: Working with a Team
&lt;/h1&gt;

&lt;p&gt;It’s when multiple developers work on the same project using Git and GitHub.&lt;br&gt;
&lt;strong&gt;How it works&lt;/strong&gt;&lt;br&gt;
1.Shared Repository:&lt;br&gt;
 A central GitHub repository acts as the “source of truth.” Team members clone this repo to work locally and push changes back when ready.&lt;br&gt;
2.Branching:&lt;br&gt;
Each developer works in their own branch (e.g., feature/login-page, fix/button-crash). This isolates work and prevents disruptions to the main branch.&lt;br&gt;
3.Pull Requests (PRs):&lt;br&gt;
 When a branch is ready, the developer opens a PR. This lets teammates review the code, discuss changes, and approve before merging.&lt;br&gt;
4.Permissions &amp;amp; Roles:&lt;br&gt;
Admins control access (who can merge, who can push to protected branches)&lt;br&gt;
Contributors usually push to their branches and open PRs for review&lt;br&gt;
Reviewers suggest improvements or approve code before it goes live&lt;/p&gt;

&lt;h1&gt;
  
  
  Pull Requests (PRs): Merging Changes
&lt;/h1&gt;

&lt;p&gt;A pull request (PR) is a way to propose changes you've made in one branch to be merged into another branch usually the main or develop branch.&lt;br&gt;
Think of a PR like saying:&lt;br&gt;
“Hey team, I’ve made some updates. Can someone review and merge them into the main codebase?”&lt;br&gt;
It’s a key part of collaborative workflows on GitHub and ensures changes are reviewed, tested, and approved before becoming part of the final project.&lt;br&gt;
&lt;strong&gt;Why PRs Matter&lt;/strong&gt;&lt;br&gt;
1.Enable Code Review:&lt;br&gt;
Other team members can review your code, catch bugs, and suggest improvements before anything is merged.&lt;br&gt;
2.Keep Main Branch Clean:&lt;br&gt;
By reviewing changes first, PRs protect the main branch from unstable or broken code.&lt;br&gt;
3.Encourage Team Collaboration:&lt;br&gt;
PRs often lead to discussions around code quality, best practices, or alternative solutions.&lt;/p&gt;

&lt;h1&gt;
  
  
  How to Create a Pull Request
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
   Create a Feature Branch Locally
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;

&lt;p&gt;Make your changes in the project files&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2:&lt;/strong&gt;Stage and Commit Your Work
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add dark mode feature"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3:&lt;/strong&gt; Push Your Branch to GitHub
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Step 1: Create a Feature Branch Locally
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;

&lt;p&gt;Make your changes in the project files&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Step 2:&lt;/strong&gt; Stage and Commit Your Work
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add dark mode feature"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Step 3:&lt;/strong&gt; Push Your Branch to GitHub
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; Open the Pull Request on GitHub&lt;br&gt;
Navigate to your repo on GitHub&lt;br&gt;
You’ll see a prompt:&lt;br&gt;
“Compare &amp;amp; pull request” → Click it&lt;br&gt;
Add:&lt;br&gt;
A title (e.g., feat: Add dark mode toggle)&lt;br&gt;
A description explaining what you did and why&lt;br&gt;
Link issues it solves (e.g., Closes #14)&lt;br&gt;
Assign reviewers and labels if needed&lt;br&gt;
Click “Create Pull Request"&lt;/p&gt;
&lt;h1&gt;
  
  
  Code Review: Improving Code Quality
&lt;/h1&gt;

&lt;p&gt;Code review is the process where team members review each other’s code before it is merged into the main branch. It happens during a pull request (PR) and ensures that all changes meet the project’s standards.&lt;br&gt;
Think of it like proofreading a document before submitting it except you're reviewing code for logic, readability, and potential issues.&lt;br&gt;
Code reviews help improve not just the quality of the code but also the quality of the team's collaboration&lt;/p&gt;
&lt;h1&gt;
  
  
  GitHub Issues: Tracking Bugs &amp;amp; Tasks
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;What Are Issues?&lt;/strong&gt;&lt;br&gt;
GitHub Issues help teams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Report bugs &lt;/li&gt;
&lt;li&gt;Suggest features &lt;/li&gt;
&lt;li&gt;Assign tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Use Them?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep development organized&lt;/li&gt;
&lt;li&gt;Link PRs to issues with keywords (Fixes #12)&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  Essential Git Commands
&lt;/h1&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="o"&gt;[&lt;/span&gt;url] Clone a repo
git status  Show current changes
git add &lt;span class="nb"&gt;.&lt;/span&gt;   Stage changes
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"msg"&lt;/span&gt; Save a snapshot
git push    Upload changes
git pull    Download changes
git branch  List branches
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Pushing Changes to GitHub
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create a branch
&lt;/h2&gt;




&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; fix-navbar&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;/h2&gt;


&lt;h1&gt;
  
  
  Make changes, then stage &amp;amp; commit
&lt;/h1&gt;







&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bash git add .&lt;br&gt;
git commit -m "Fix navbar layout issue" &lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;/h2&gt;


&lt;h1&gt;
  
  
  Push changes to your GitHub repo
&lt;/h1&gt;







&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin fix-navbar &lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  

&lt;/h2&gt;


&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Mastering Git and GitHub empowers you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collaborate with other developers&lt;/li&gt;
&lt;li&gt;Keep your code organized and versioned&lt;/li&gt;
&lt;li&gt;Contribute to open-source&lt;/li&gt;
&lt;li&gt;Deliver higher quality software
Whether you're solo-building or working on a team, these tools are the foundation of modern development.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>versioncontrol</category>
      <category>github</category>
      <category>collaboration</category>
      <category>git</category>
    </item>
    <item>
      <title>Setting Up Your Windows Development Environment Edition</title>
      <dc:creator>Elizabeth Ng'ang'a</dc:creator>
      <pubDate>Tue, 24 Jun 2025 22:01:44 +0000</pubDate>
      <link>https://forem.com/1303liz/setting-up-your-windows-development-environment-edition-4jo5</link>
      <guid>https://forem.com/1303liz/setting-up-your-windows-development-environment-edition-4jo5</guid>
      <description>&lt;p&gt;&lt;strong&gt;why This Article?&lt;/strong&gt;&lt;br&gt;
It always feel like a puzzle while starting development on Windows. This guide walks you through exactly how I did it—based on some research i did.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What You'll Set Up&lt;/strong&gt;&lt;br&gt;
1.Git + GitHub SSH (secure key auth)&lt;br&gt;
2.Python 3.10+ (not from Microsoft Store!)&lt;br&gt;
3.Text Editor(VS Code)&lt;br&gt;
4.WSL2 (Linux on Windows)&lt;br&gt;
5.Docker Desktop&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Install Git &amp;amp; Configure GitHub SSH&lt;/strong&gt;&lt;br&gt;
Download the official Git installer from git-scm.com&lt;br&gt;
Run the executable and follow these installation options:&lt;br&gt;
Select "Use Git from the Windows Command Prompt" (adds Git to PATH)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnfjocyqw21w8xsba2jl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhnfjocyqw21w8xsba2jl.png" alt="git download" width="626" height="590"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose "Checkout Windows-style, commit Unix-style line endings" (recommended)&lt;br&gt;
Pick "Use Windows' default console window" (or "Use MinTTY" if you prefer Git Bash)&lt;br&gt;
Complete the installation and verify in Command Prompt/PowerShell:&lt;br&gt;
bash&lt;br&gt;
git --version&lt;br&gt;
&lt;strong&gt;Set Up SSH for GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Install Git &amp;amp; Configure GitHub SSH
Download Git from git-scm.com&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Set up SSH for GitHub&lt;/strong&gt;&lt;br&gt;
In Git Bash, run:&lt;br&gt;
bash&lt;br&gt;
Copy&lt;br&gt;
Edit&lt;br&gt;
ssh-keygen -t ed25519 -C "&lt;a href="mailto:your_email@example.com"&gt;your_email@example.com&lt;/a&gt;"&lt;br&gt;
Press Enter 3 times to accept defaults.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlxaahey2l156u8n6dwd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frlxaahey2l156u8n6dwd.png" alt="ssh bash" width="565" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;clip &amp;lt; ~/.ssh/id_ed25519.pub&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to GitHub SSH Keys Settings&lt;/li&gt;
&lt;li&gt;Click New SSH Key&lt;/li&gt;
&lt;li&gt;Paste the copied key into the “Key” field&lt;/li&gt;
&lt;li&gt;Name it something like "Windows Laptop"&lt;/li&gt;
&lt;li&gt;Click Add SSH Key
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckj9ym9nkpqtl8lubdw2.png" alt="ssh key" width="647" height="372"&gt;
To test whether you have added the ke correctly you will run this:
ssh -T &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpicttsm384gl2yxy26v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpicttsm384gl2yxy26v2.png" alt="test the key" width="596" height="203"&gt;&lt;/a&gt;&lt;br&gt;
2.&lt;strong&gt;Python&lt;/strong&gt;&lt;br&gt;
You will  use this link; &lt;a href="https://www.python.org/downloads/" rel="noopener noreferrer"&gt;https://www.python.org/downloads/&lt;/a&gt;&lt;br&gt;
Use the windows option&lt;br&gt;
During installation,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add Python to Path.&lt;/li&gt;
&lt;li&gt;Then install.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0y1prjwdgk1hfwxhnxjd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0y1prjwdgk1hfwxhnxjd.png" alt="python download" width="642" height="525"&gt;&lt;/a&gt;&lt;br&gt;
After installation use this: (python --version)   to check the version.&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Vs Code&lt;/strong&gt;&lt;br&gt;
I decided to use (VS Code)as my text editor of choice because it's lightweight, incredibly fast, and very beginner-friendly. It also has a vibrant extension ecosystem, built-in Git support, and seamless integration with tools like Python, Docker, and WSL — making it ideal for both newcomers and experienced developers alike.&lt;br&gt;
use this link to download;&lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp27ixy2jh33zl1alrari.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp27ixy2jh33zl1alrari.png" alt="vs code download" width="663" height="629"&gt;&lt;/a&gt;&lt;br&gt;
After installation and taking a small tour on the editor , add some extensions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fducdge53xt1olaat5brm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fducdge53xt1olaat5brm.png" alt="Vs code outlook" width="797" height="505"&gt;&lt;/a&gt;&lt;br&gt;
This is how Vs Code look like and its easy to learn and navigate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Install WSL(windows Subsystem for Linux)&lt;/strong&gt;&lt;br&gt;
This gives a linux enviroment.&lt;br&gt;
In Admin PowerShell Run;&lt;br&gt;
wsl --install&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F296bhlxrwo6ydakm5dgz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F296bhlxrwo6ydakm5dgz.png" alt="wsl download" width="517" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then restart the laptop when prompted.Choose linux distro(i prefered ubunt since am a beginner).You can set up username and password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Install Docker Desktop for Windows&lt;/strong&gt;&lt;br&gt;
You can use this link to download;&lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;https://www.docker.com/products/docker-desktop/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkmwlf9lk7x4ng4v2ei5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkmwlf9lk7x4ng4v2ei5g.png" alt="docker download" width="492" height="620"&gt;&lt;/a&gt;&lt;br&gt;
Download Docker desktop then follow the prompts given and if need be restart your laptop.&lt;/p&gt;

</description>
      <category>windows</category>
      <category>webdev</category>
      <category>wsl</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
