<?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: Shoukrey Tom</title>
    <description>The latest articles on Forem by Shoukrey Tom (@abdulshakoor).</description>
    <link>https://forem.com/abdulshakoor</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%2F374285%2Fb2cfc5ad-7eeb-44e6-94eb-0b0aa7a61427.jpg</url>
      <title>Forem: Shoukrey Tom</title>
      <link>https://forem.com/abdulshakoor</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/abdulshakoor"/>
    <language>en</language>
    <item>
      <title>Add RSS Feed to your Django site</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Wed, 24 Feb 2021 01:32:01 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/add-rss-feed-to-your-django-site-2k8n</link>
      <guid>https://forem.com/abdulshakoor/add-rss-feed-to-your-django-site-2k8n</guid>
      <description>&lt;p&gt;&lt;strong&gt;you can jump to step 4 if you want to test it with your existing project&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;Index&lt;/h1&gt;

&lt;p&gt;1- Intorduction&lt;br&gt;
2- Environment Setup&lt;br&gt;
3- Project Setup&lt;br&gt;
4- Add RSS Feed&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;RSS&lt;/strong&gt; stands for &lt;u&gt;R&lt;/u&gt;eally &lt;u&gt;S&lt;/u&gt;imple &lt;u&gt;S&lt;/u&gt;yndication it allows users and applications to access updates to your website. or simply it informs users or visitors about updates in your website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Environment Setup&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;create your virtual environment or use an existing one: &lt;code&gt;python -m venv env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;activate your virtual environment &lt;code&gt;source env/bin/activate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;install Django &lt;code&gt;pip install django&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Setup &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;create new folder &lt;code&gt;mkdir django-add-rssfeed &amp;amp;&amp;amp; cd django-add-rssfeed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;create new project &lt;code&gt;django-admin startproject config .&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;create new app &lt;code&gt;python manage.py startapp blog&lt;/code&gt; and add it to &lt;code&gt;INSTALLED_APPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;edit &lt;code&gt;blog/models.py&lt;/code&gt; and paste these code in it:
&lt;/li&gt;
&lt;/ul&gt;

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

class Post(models.Model):
    STATUS_CHOICES = [('published', 'Published'), ('draft', 'Draft')]
    title = models.CharField(max_length=250)
    content = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=12, choices=STATUS_CHOICES, default='draft')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'slug': self.slug})

@receiver(post_save, sender=Post)
def save_slug(sender, instance=None, created=False, **kwargs):
    if created:
        instance.slug = slugify(instance.title)
        instance.save()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;python manage.py makemigrations&lt;/code&gt; then &lt;code&gt;python manage.py migrate&lt;/code&gt; and don't forget to create a superuser &lt;code&gt;python manage.py createsuperuser&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;add Post to &lt;code&gt;admin.py&lt;/code&gt; and add some data for testing later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Add RSS Feed &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Create a new file &lt;code&gt;blog/feeds.py&lt;/code&gt; and put this code in it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.contrib.syndication.views import Feed
from django.utils.feedgenerator import Atom1Feed #optional

from .models import Post

class PostFeed(Feed):
    feed_type = Atom1Feed #optional
    title = "My Blog"
    link = ""
    description = "New Posts of My Blog"

    def items(self):
        return Post.objects.filter(status='published')

    def item_title(self, item):
        return item.title

    def item_description(self, item):
        return truncatewords(item.content, 30) # item.content
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;items()&lt;/code&gt; returns a list of objects that should be included in the feed as &lt;code&gt;&amp;lt;item&amp;gt;&lt;/code&gt; elements. and so &lt;code&gt;item_title&lt;/code&gt; and &lt;code&gt;item_description&lt;/code&gt; are used to return a single object which will be included in &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;description&amp;gt;&lt;/code&gt; elements.&lt;br&gt;
if you don't have &lt;code&gt;get_absolute_url&lt;/code&gt; in your model you must override &lt;code&gt;item_link(self, item)&lt;/code&gt; which returns reversed URL.&lt;br&gt;
&lt;code&gt;feed_type&lt;/code&gt; is an optional attribute, it is used to change Feed Type, By default, feeds produced by Django use RSS 2.0.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;and now map it to a &lt;code&gt;blog/urls.py&lt;/code&gt;:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from .feeds import PostFeed

urlpatterns = [
    .......
    path("feed/rss", PostFeed(), name="post-feed"),
    ......
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here is how it looks like:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7l9S9OBt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1y7gmgj6nf7anwd9hxop.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7l9S9OBt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1y7gmgj6nf7anwd9hxop.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;source code is upload to github: &lt;a href="https://github.com/abdulshak1999/Python/tree/main/django/website_rssfeed"&gt;https://github.com/abdulshak1999/Python/tree/main/django/website_rssfeed&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for more information check this: &lt;a href="https://docs.djangoproject.com/en/3.1/ref/contrib/syndication/"&gt;https://docs.djangoproject.com/en/3.1/ref/contrib/syndication/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>python</category>
    </item>
    <item>
      <title>Add Sitemap to Your Django Site</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Tue, 23 Feb 2021 01:37:16 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/add-sitemap-to-your-django-site-2eg9</link>
      <guid>https://forem.com/abdulshakoor/add-sitemap-to-your-django-site-2eg9</guid>
      <description>&lt;p&gt;&lt;strong&gt;you can jump to step 4 if you want to test it with your existing project&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;Index&lt;/h1&gt;

&lt;p&gt;1- Intorduction&lt;br&gt;
2- Environment Setup&lt;br&gt;
3- Project Setup&lt;br&gt;
4- Add Sitemap&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;A sitemap tells search engines which pages and files you think are important in your site and also provides valuable information about these files.&lt;br&gt;
it helps search engines to crawl your website quickly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Environment Setup&lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;create your virtual environment or use an existing one: &lt;code&gt;python -m venv env&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;activate your virtual environment &lt;code&gt;source env/bin/activate&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;install Django &lt;code&gt;pip install django&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Project Setup &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;create new folder &lt;code&gt;mkdir django-add-sitemap &amp;amp;&amp;amp; cd django-add-sitemap&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;create new project &lt;code&gt;django-admin startproject config .&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;create new app &lt;code&gt;python manage.py startapp blog&lt;/code&gt; and add it to &lt;code&gt;INSTALLED_APPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;edit &lt;code&gt;blog/models.py&lt;/code&gt; and paste these code in it:
&lt;/li&gt;
&lt;/ul&gt;

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

class Post(models.Model):
    STATUS_CHOICES = [('published', 'Published'), ('draft', 'Draft')]
    title = models.CharField(max_length=250)
    content = models.TextField()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=12, choices=STATUS_CHOICES, default='draft')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'slug': self.slug})

@receiver(post_save, sender=Post)
def save_slug(sender, instance=None, created=False, **kwargs):
    if created:
        instance.slug = slugify(instance.title)
        instance.save()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;python manage.py makemigrations&lt;/code&gt; then &lt;code&gt;python manage.py migrate&lt;/code&gt; and don't forget to create a superuser &lt;code&gt;python manage.py createsuperuser&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;add Post to &lt;code&gt;admin.py&lt;/code&gt; and add some data for testing later.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Add Sitemap &lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;first add &lt;code&gt;django.contrib.sitemaps&lt;/code&gt; to &lt;code&gt;INSTALLED_APPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;create &lt;code&gt;blog/sitemaps.py&lt;/code&gt; then paste this code to it:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from django.contrib import sitemaps
from .models import Post


class PostSitemap(sitemaps.Sitemap):
    changefreq = "weakly"
    priority = 0.8

    def items(self):
        return Post.objects.filter(status='published')

    def lastmod(self, obj):
        return obj.updated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;changefreq&lt;/code&gt; this attribute is used to tell how frequently your site is changing. other values are &lt;code&gt;["always", "hourly", "daily", "monthly", "yearly", "never"]&lt;/code&gt;.&lt;br&gt;
you can override default &lt;code&gt;location&lt;/code&gt; method if have you don't have &lt;code&gt;get_absolute_url&lt;/code&gt; in your model.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;finally, map the URL for the sitemaps in the &lt;code&gt;config/urls.py&lt;/code&gt; or &lt;code&gt;blog/urls.py&lt;/code&gt; file.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# config/urls.py
from django.contrib.sitemaps.views import sitemap
from blog.sitemaps import PostSitemap

sitemaps = {
    "posts": PostSitemap,
}

urlpatterns = [
    ..........
    path("sitemap.xml", sitemap, {"sitemaps": sitemaps}, name="sitemap"),
    .........
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;here is how it looks like in a browser:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--F3S0Pctt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ztxnswfv12oa4y0bbfg.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--F3S0Pctt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ztxnswfv12oa4y0bbfg.jpg" alt="Result"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;source code is upload to github: &lt;a href="https://github.com/abdulshak1999/Python/tree/main/django/website_sitemap"&gt;https://github.com/abdulshak1999/Python/tree/main/django/website_sitemap&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for more information check this: &lt;a href="https://docs.djangoproject.com/en/3.0/ref/contrib/sitemaps/"&gt;https://docs.djangoproject.com/en/3.0/ref/contrib/sitemaps/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>django</category>
      <category>python</category>
    </item>
    <item>
      <title>Useful Django 3rd party packages Part 2</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Mon, 22 Feb 2021 20:33:04 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/useful-django-3rd-party-packages-part-2-25da</link>
      <guid>https://forem.com/abdulshakoor/useful-django-3rd-party-packages-part-2-25da</guid>
      <description>&lt;h3&gt;
  
  
  1- django-suit (not compatible with Django3)
&lt;/h3&gt;

&lt;p&gt;this package is an alternative to Django's built-in admin interface, It comes with a lot of widgets and customizations.&lt;/p&gt;

&lt;p&gt;Live Demo: &lt;a href="http://djangosuit.com/admin/"&gt;http://djangosuit.com/admin/&lt;/a&gt;&lt;br&gt;
Doc: &lt;a href="https://django-suit.readthedocs.io/en/develop/"&gt;https://django-suit.readthedocs.io/en/develop/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/darklow/django-suit"&gt;https://github.com/darklow/django-suit&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2- django-import-export
&lt;/h3&gt;

&lt;p&gt;this package is so helpful when you want to import or export your data, it supports multiple file formats (excel, json, csv, yaml, HTML, ...etc)&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-import-export.readthedocs.io/en/latest/"&gt;https://django-import-export.readthedocs.io/en/latest/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/django-import-export/django-import-export"&gt;https://github.com/django-import-export/django-import-export&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3- django-summernote
&lt;/h3&gt;

&lt;p&gt;this package allows you to embed Summernote into Django (admin or form). and if you don't know Summernote, &lt;a href="https://summernote.org/"&gt;Summernote&lt;/a&gt; is a JavaScript library that helps you create WYSIWYG editors online.&lt;/p&gt;

&lt;p&gt;Doc: Not available (just use users guide on their repository)&lt;br&gt;
Source: &lt;a href="https://github.com/summernote/django-summernote"&gt;https://github.com/summernote/django-summernote&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4- django-storages
&lt;/h3&gt;

&lt;p&gt;this is essential when your media files and your website and hosted on different servers, for example, your website is hosted on Heroku and your media files are hosted on AWS or Dropbox for example. Django comes with a storage backend for FileSystem just, so you have to use this library.&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-storages.readthedocs.io/en/latest/"&gt;https://django-storages.readthedocs.io/en/latest/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/jschneier/django-storages"&gt;https://github.com/jschneier/django-storages&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5- django-allauth
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.intenct.nl/projects/django-allauth/"&gt;django-allauth&lt;/a&gt; is a reusable Django app that allows for both local and social authentication, with flows that just work.&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-allauth.readthedocs.io/en/latest/index.html"&gt;https://django-allauth.readthedocs.io/en/latest/index.html&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/pennersr/django-allauth"&gt;https://github.com/pennersr/django-allauth&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Useful Django 3rd party packages part 1</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Fri, 19 Feb 2021 03:56:10 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/useful-django-3rd-party-packages-part-1-2g8a</link>
      <guid>https://forem.com/abdulshakoor/useful-django-3rd-party-packages-part-1-2g8a</guid>
      <description>&lt;h4&gt;
  
  
  as you already know that using 3rd party packages or libraries saves you a lot of time to make your work done.
&lt;/h4&gt;

&lt;h4&gt;
  
  
  here is a list of Django 3rd which could help you to boost your project development.
&lt;/h4&gt;

&lt;h2&gt;
  
  
  1. django-extension
&lt;/h2&gt;

&lt;p&gt;it is one of the best and popular django packages, it has a lot of features including custom commands (&lt;code&gt;shell_plus&lt;/code&gt; &lt;code&gt;admin_generator&lt;/code&gt;, ...), custom fields, and more.&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-extensions.readthedocs.io/en/latest/index.html"&gt;https://django-extensions.readthedocs.io/en/latest/index.html&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/django-extensions/django-extensions"&gt;https://github.com/django-extensions/django-extensions&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. django-crispy-forms
&lt;/h2&gt;

&lt;p&gt;if you are you using forms a lot and your skill on the front-end is so bad as mine, I better recommend you to use it, it controls the rendering of you form and make it nice looking.&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-crispy-forms.readthedocs.io/en/latest/"&gt;https://django-crispy-forms.readthedocs.io/en/latest/&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/django-crispy-forms/django-crispy-forms"&gt;https://github.com/django-crispy-forms/django-crispy-forms&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. django-seed
&lt;/h2&gt;

&lt;p&gt;yeah, I know that you're probably sick up of visiting the admin page every time you've made changes to your models, me too and that is why you should use this package, it fills your DB with fake data which you can use for testing.&lt;/p&gt;

&lt;p&gt;Doc: not available (read their README.md on the link below)&lt;br&gt;
Source: &lt;a href="https://github.com/Brobin/django-seed"&gt;https://github.com/Brobin/django-seed&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. django-autoslug
&lt;/h2&gt;

&lt;p&gt;this package provides &lt;code&gt;AutoSlugField&lt;/code&gt; which is exactly the same as Django &lt;code&gt;SlugField&lt;/code&gt; but it is an auto-filled field, it is so helpful when you don't want to use signals or use &lt;code&gt;slugify&lt;/code&gt; function on your view or form.&lt;/p&gt;

&lt;p&gt;Doc: &lt;a href="https://django-autoslug.readthedocs.io/en/latest/index.html"&gt;https://django-autoslug.readthedocs.io/en/latest/index.html&lt;/a&gt;&lt;br&gt;
Source: &lt;a href="https://github.com/justinmayer/django-autoslug"&gt;https://github.com/justinmayer/django-autoslug&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5. django-b2
&lt;/h2&gt;

&lt;p&gt;this package provides a Django storage backend for &lt;a href="https://www.backblaze.com/"&gt;BackBlaze&lt;/a&gt; I'm using it as an alternative to AWS.&lt;/p&gt;

&lt;p&gt;Doc: not available (read their README.md on the link below)&lt;br&gt;
Source: &lt;a href="https://github.com/pyutil/django-b2"&gt;https://github.com/pyutil/django-b2&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>webdev</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Portfolio Review</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Wed, 27 Jan 2021 19:55:52 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/portfolio-review-10hf</link>
      <guid>https://forem.com/abdulshakoor/portfolio-review-10hf</guid>
      <description>&lt;p&gt;Hi developers, let me know if I have to customize it more.&lt;br&gt;
Portfolio: &lt;a href="https://shoukrey.herokuapp.com/"&gt;Click here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://shoukrey.herokuapp.com/"&gt;https://shoukrey.herokuapp.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>portfolio</category>
      <category>django</category>
      <category>python</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Learn Django in an easy way</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Wed, 15 Jul 2020 23:14:20 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/learn-django-in-an-easy-way-1da6</link>
      <guid>https://forem.com/abdulshakoor/learn-django-in-an-easy-way-1da6</guid>
      <description>&lt;p&gt;&lt;b&gt;If you want to learn basics of django in just a week, here are some steps to help you:&lt;/b&gt; &lt;i&gt;(you must have a good knowledge in python)&lt;/i&gt;&lt;br&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;learn how to install django from &lt;a href="https://www.djangoproject.com/download/"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;know how to create django projects &lt;code&gt;django-admin startproject my_project&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;learn the structure of django project (check it &lt;a href="https://learnbatta.com/course/django/understanding-django-project-structure/"&gt;here&lt;/a&gt;), and the use of manage.py file.&lt;/li&gt;
&lt;li&gt;learn how to route urls&lt;/li&gt;
&lt;li&gt;learn how to render templates&lt;/li&gt;
&lt;li&gt;learn about models&lt;/li&gt;
&lt;li&gt;learn how to add static files (css, images, js, ...ect) to the project&lt;/li&gt;
&lt;li&gt;learn how to deal with admin page &lt;b&gt;( &lt;i&gt;it's already setup for you just know how to create a superuser; and how to add contents (models) to it&lt;/i&gt; )&lt;/b&gt;
&lt;/li&gt;
&lt;li&gt;learn about sessions (cookies)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I just learned it in lees than a week.&lt;br&gt;
Here is a youtube channel where I learned from &lt;a href="https://www.youtube.com/watch?v=UmljXZIypDc&amp;amp;list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p"&gt;Corey Schafer&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>codenewbie</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Essential git commands</title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Fri, 12 Jun 2020 18:55:21 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/essential-git-commands-4n70</link>
      <guid>https://forem.com/abdulshakoor/essential-git-commands-4n70</guid>
      <description>&lt;ol&gt;
    &lt;li&gt; &lt;h3&gt; git init&lt;/h3&gt; &lt;p&gt;this command initializes the repository.&lt;br&gt;&lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git add&lt;/h3&gt; &lt;p&gt;this command adds file/files to the repository.&lt;br&gt;&lt;code&gt;git add file_name.ext&lt;/code&gt;&lt;br&gt; or add all files in one go: &lt;code&gt; git add .&lt;/code&gt;, &lt;code&gt;git add --all&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git commit&lt;/h3&gt; &lt;p&gt;this command commits the changes to the repository with a message.&lt;br&gt;&lt;code&gt; git commit -m "message"&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git clone &lt;/h3&gt; &lt;p&gt;this command clones a repository which is stored in a cloud (e.g: github) and creates a local copy.&lt;br&gt; &lt;code&gt;git clone url_for_repository&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git push &lt;/h3&gt; &lt;p&gt; this command pushes the local repository to the cloud(e.g: github).&lt;br&gt;&lt;code&gt; git push&lt;/code&gt; , &lt;code&gt; git push -u remote_name branch_name&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git pull &lt;/h3&gt; &lt;p&gt; this command pulls or gets an changes from the copy of cloud-stored repository. &lt;code&gt; git pull&lt;/code&gt; &lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git branch &lt;/h3&gt; &lt;p&gt;this command creates/deletes a branch. &lt;br&gt;&lt;i&gt;Create: &lt;/i&gt;&lt;code&gt;git branch branch_name&lt;/code&gt;&lt;br&gt;&lt;i&gt;Delete: &lt;/i&gt;&lt;code&gt; git branch -d branch_name&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git rm&lt;/h3&gt; &lt;p&gt; this command is used to delete file/files from git repository.&lt;br&gt;&lt;code&gt; git rm --cached file_name.ext&lt;/code&gt; , &lt;code&gt; git rm --cached .&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git status&lt;/h3&gt; &lt;p&gt; this command is used to show changes to the git repository(new files, modified files, deleted files).&lt;br&gt; &lt;code&gt; git status&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git log &lt;/h3&gt; &lt;p&gt; this command is used to show all commits.&lt;br&gt; &lt;code&gt; git log&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git checkout &lt;/h3&gt; &lt;p&gt; this command is used to switch between branches.&lt;br&gt; &lt;code&gt; git switch branch_name&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
    &lt;li&gt; &lt;h3&gt; git merge &lt;/h3&gt; &lt;p&gt; this command is used to merge tow branches.&lt;br&gt; &lt;code&gt; git merge target_branch source_branch &lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>steps to learn a programming in a best way </title>
      <dc:creator>Shoukrey Tom</dc:creator>
      <pubDate>Thu, 11 Jun 2020 04:51:08 +0000</pubDate>
      <link>https://forem.com/abdulshakoor/steps-to-learn-a-programming-in-a-best-way-3p7k</link>
      <guid>https://forem.com/abdulshakoor/steps-to-learn-a-programming-in-a-best-way-3p7k</guid>
      <description>&lt;p&gt;here is a list of steps that you should follow before jumping into programming:&lt;/p&gt;

&lt;ol&gt;
    &lt;li&gt;basics of your operating system&lt;/li&gt;
    &lt;li&gt;command-line&lt;/li&gt;
    &lt;li&gt;basics of any programming langauge&lt;/li&gt;
    &lt;li&gt;algorithms &amp;amp; data structures&lt;/li&gt;
    &lt;li&gt;version controls (e.g: git)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I just knew why it's important to know &lt;strong&gt;where to start?&lt;/strong&gt; after I've spent three years of coding. because there ain't no one to guide me and I was a student of electronic engineering.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>newbie</category>
      <category>steps</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
