<?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>DEV Community: KetanIP</title>
    <description>The latest articles on DEV Community by KetanIP (@ketanip).</description>
    <link>https://dev.to/ketanip</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%2F482907%2F6b43098a-ddf6-4d75-8f88-14adc8cb0839.jpeg</url>
      <title>DEV Community: KetanIP</title>
      <link>https://dev.to/ketanip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ketanip"/>
    <language>en</language>
    <item>
      <title>Analytics Box - A simple privacy focused analytics in GO. </title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Thu, 02 Sep 2021 05:36:19 +0000</pubDate>
      <link>https://dev.to/ketanip/analytics-box-a-simple-privacy-focused-analytics-in-go-hmm</link>
      <guid>https://dev.to/ketanip/analytics-box-a-simple-privacy-focused-analytics-in-go-hmm</guid>
      <description>&lt;p&gt;Repo: &lt;a href="https://github.com/KetanIP/analytics" rel="noopener noreferrer"&gt;https://github.com/KetanIP/analytics&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hello guys, today I am here to share with you a project that I've made recently, it is Analytics Box - A simple privacy focused analytics in Golang. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Analytics Box ?
&lt;/h2&gt;

&lt;p&gt;Analytics box is analytics tool like google analytics but instead of ripping user's privacy off them like google it respects their privacy and doesn't collect any unnecessary information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;No Cookies.&lt;/li&gt;
&lt;li&gt;Forgets user in 24 hours so even if wish to know user's private info you can't.&lt;/li&gt;
&lt;li&gt;Can track unique page views effectively without hurting user's privacy.&lt;/li&gt;
&lt;li&gt;Custom events available.&lt;/li&gt;
&lt;li&gt;Super simple to setup. ( 1 go binary + 1 super small script on frontend ).&lt;/li&gt;
&lt;li&gt;Super low resource consumption.&lt;/li&gt;
&lt;li&gt;Dashboard is decoupled from the tool so you can use any tool ( like Metabase for visualization of data ).&lt;/li&gt;
&lt;li&gt;Supports multiple SQL database.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  You may wish to ask some question here are some FAQ.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How do we uniquely identify users?
&lt;/h3&gt;

&lt;p&gt;We identify users uniquely by creating a hash and storing it in a Redis database along with a UUID which automatically deletes itself in 24 hours.&lt;br&gt;
hash = md5( raw_public_ip + browser_name + operating_system + date + secret)&lt;/p&gt;

&lt;p&gt;It generates a 32 character long string with is stored in database along with a UUID and it is only valid for a day.&lt;/p&gt;

&lt;p&gt;Parameters used in hash have the following reasons,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;IP&lt;/strong&gt; - to identify user ( It may be a public IP like café or a user's own IP )&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser&lt;/strong&gt; - So if user changes his/her browser we forget it.
&lt;strong&gt;Operating System&lt;/strong&gt; - So if user changes its device we forget him.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Date&lt;/strong&gt; - So we forget user daily.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secret&lt;/strong&gt; - Here comes the most important part we while production recommend to use a UUID that isn't logged anywhere so even if want to view user's private info you can't, but while development use a hardcoded string as you restart server many times and it will generate false unique visitors.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  What makes it different ?
&lt;/h3&gt;

&lt;p&gt;There are many privacy friendly analytics tool but here are some points that makes it special.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It is written in go so you can but it on the same server as your app as it uses nearly to negligible amount of resource ( in large schema of things ).&lt;/li&gt;
&lt;li&gt;It is written in go fiber which can handle a by lot I mean around 35,000 requests per second ( as per their website).&lt;/li&gt;
&lt;li&gt;It currently supports PostgreSQL and in future I plan to add support for Clickhouse because of its amazing performance, and I will continue to keep postgres supported for as long as possible because of its low resource consumption it would be a great tool for small websites like blogs, like one that, I have though it hasn't been updated for a while now.&lt;/li&gt;
&lt;li&gt;I don't plan to convert it into a SaaS application ( at least in near future ) as I don't want to make another SaaS privacy focused analytics app as there are already many good in market. I'm making this in a way that you can get most insights from your data so it doesn't have a dashboard ( use something like Metabase for it here are some screenshots of dashboard that I build within 3-4 minutes while writing this readme and I'm no profession and it on par with what SaaS provides apps provides to you) with complete control over your data and it can run on simple commodity hardware for a long period of time without any manual Interventions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FvVNg7PM.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FvVNg7PM.jpg" alt="1st image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FonLrNsl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FonLrNsl.jpg" alt="2nd image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FG44UP29.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FG44UP29.jpg" alt="3rd image"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Why don't it has a dashboard build in ?
&lt;/h3&gt;

&lt;p&gt;There are many privacy friendly analytics tools and they have a dashboard built in as most of them are SaaS application but this isn't gonna be a SaaS app so in order to make most sense out of the data we recommend users to use something like Metabase as even a non-techie can make custom charts and if you are a techie then you can make even more sense of data by writing custom SQL Queries to obtain and visualize data.&lt;/p&gt;

&lt;p&gt;The Images you saw above were made within 3-4 minutes while I was writing README for GitHub repo, and it was auto generated I just changed its sizes and names that's it. So we have made a conscious decision to decouple analytics tool and dashboard for it. &lt;/p&gt;

</description>
      <category>go</category>
      <category>analytics</category>
      <category>privacy</category>
      <category>fasthttp</category>
    </item>
    <item>
      <title>API that converts Article to JSON</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Thu, 29 Jul 2021 10:28:21 +0000</pubDate>
      <link>https://dev.to/ketanip/api-that-converts-article-to-json-3kil</link>
      <guid>https://dev.to/ketanip/api-that-converts-article-to-json-3kil</guid>
      <description>&lt;p&gt;&lt;strong&gt;Edit&lt;/strong&gt;: Its free ( no limits) ( no Card needed ), feel free to play and experiment with it. You can find it at &lt;a href="https://kutt.it/7fxT1b"&gt;Rapid API Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hello guys.&lt;/p&gt;

&lt;p&gt;Today I'm happy to announce that I have launched a simple micro-saas application. My API helps you to &lt;strong&gt;convert any article be it a blog, news article or any thing to a well structured &lt;code&gt;json&lt;/code&gt; document&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It will parse it and return its title,  top image, authors, publish date, text, summary, videos, images, tags, keywords, and url.&lt;/p&gt;

&lt;p&gt;Not only this but it also returns sentimental analysis of the text so you can use it forward in your application. So you can use the sentiments in your application.&lt;/p&gt;

&lt;p&gt;You can find it at &lt;a href="https://kutt.it/7fxT1b"&gt;Rapid API Marketplace&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="k"&gt;default&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://article-parser.p.rapidapi.com/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;params&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;website_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://www.washingtonpost.com/politics/2021/06/18/gops-gaslighting-biden-putin-trump/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-key&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_RAPID_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-rapidapi-host&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;article-parser.p.rapidapi.com&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The parsed article returned is,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"The GOP’s gaslighting on Biden, Putin and Trump"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"top_image"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"https://www.washingtonpost.com/wp-apps/imrs.php?src=https://d1i4t8bqe7zgj6.cloudfront.net/06-16-2021/t_31136d8876b14fb0a02e726c1921b27e_name_biden_presser_0616_scaled.jpg&amp;amp;w=1440"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"authors"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"Senior Reporter"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"publish_date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"2021-06-18T00:00:00"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"In their quest to pitch Biden as weak on Russia, Republicans are attacking pretty much everything they ignored about Trump."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Again: election interference. Again: human rights. Again: cyberattacks. Trump declined to focus on these things when he appeared with Putin. There was essentially nothing in his news conference geared toward holding “Russia accountable.” Biden might not have been as specific as some would have liked on things like human rights, but he at least brought them up and criticized Russia on them. Trump, by contrast, declined to and regularly suggested that the United States shouldn’t judge Russia’s human rights record."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"videos"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;

   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"images"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"https://www.washingtonpost.com/wp-apps/imrs.php?src=https://d1i4t8bqe7zgj6.cloudfront.net/06-16-2021/t_31136d8876b14fb0a02e726c1921b27e_name_biden_presser_0616_scaled.jpg&amp;amp;w=1440"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"tags"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;

   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"keywords"&lt;/span&gt;&lt;span class="p"&gt;:[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"gaslighting"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"biden"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"suggested"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"united"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"specific"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"putin"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"trump"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"human"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"declined"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"russia"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"rights"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"states"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"things"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="s2"&gt;"gops"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"https://www.washingtonpost.com/politics/2021/06/18/gops-gaslighting-biden-putin-trump/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"sentimental_analysis"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"positive"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.085&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"negative"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.038&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"neutral"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.878&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"overall"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;0.4767&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Guys please let me know your experience with it. Hope you like it.&lt;/p&gt;

</description>
      <category>api</category>
      <category>json</category>
      <category>saas</category>
      <category>data</category>
    </item>
    <item>
      <title>Introducing DBJson Document Database.</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Tue, 09 Feb 2021 15:30:57 +0000</pubDate>
      <link>https://dev.to/ketanip/introducing-dbjson-literally-27p</link>
      <guid>https://dev.to/ketanip/introducing-dbjson-literally-27p</guid>
      <description>&lt;p&gt;Hello guys today I am here to introduce my 🐶pet project DBJson. It is a Document Oriented Database.&lt;/p&gt;

&lt;p&gt;This is a simple data base which stores its data in the form of &lt;code&gt;collections&lt;/code&gt; and &lt;code&gt;records&lt;/code&gt; format in &lt;code&gt;JSON&lt;/code&gt; files!&lt;/p&gt;

&lt;p&gt;Structure of data: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FyzaK90f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fi.imgur.com%2FyzaK90f.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DON'T WORRY IT IS AUTOGENERATED.&lt;/p&gt;

&lt;p&gt;This was made by me as sometimes I don't like to setup ORM or Databases for small projects that are never going to production ever.&lt;/p&gt;

&lt;p&gt;So I though why not make a make a database for such thing only. I decided to make a &lt;code&gt;NoSQL&lt;/code&gt; database as it can store any data without setting up tables as we need to do it with RDBMS.&lt;/p&gt;

&lt;p&gt;At its current you can download/view it on &lt;a href="https://github.com/KetanIP/dbjson" rel="noopener noreferrer"&gt;Github&lt;/a&gt; also check out &lt;a href="https://ketanip.github.io/dbjson/" rel="noopener noreferrer"&gt;DBJson's docs here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At its current stage it can do the following things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating records&lt;/li&gt;
&lt;li&gt;Reading records&lt;/li&gt;
&lt;li&gt;Updating records&lt;/li&gt;
&lt;li&gt;Deleting records&lt;/li&gt;
&lt;li&gt;Filter records&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What are its inspiration ?
&lt;/h3&gt;

&lt;p&gt;It has got its inspirations from &lt;a href="https://github.com/msiemens/tinydb" rel="noopener noreferrer"&gt;tinyDB&lt;/a&gt; ( for its simplicity ) and &lt;a href="https://firebase.google.com/docs/firestore" rel="noopener noreferrer"&gt;Firestore&lt;/a&gt;( NOSQL database offered by firebase for its document style datamodelling ).&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Stated
&lt;/h2&gt;

&lt;p&gt;Getting stated with it is damn easy,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dbjson.main&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DB&lt;/span&gt;

&lt;span class="c1"&gt;# Instatilizing DB class
&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DB&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Test Data
&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Vivyan&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;last_name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Treherne&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;vtreherne0@jigsy.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip_address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;94.254.247.240&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;collection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;users&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;# Adding Record
&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createRecord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Response -&amp;gt; {'__id__': 'f00ae4e3ca8c3e318a68acc460e5f401', '__data__': {'id': 1, 'first_name': 'Vivyan', 'last_name': 'Treherne', 'email': 'vtreherne0@jigsy.com', 'ip_address': '94.254.247.240'}}
&lt;/span&gt;
&lt;span class="c1"&gt;# Updating Record
&lt;/span&gt;&lt;span class="n"&gt;record_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f00ae4e3ca8c3e318a68acc460e5f401&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;to_update&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;email&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jhon@email.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ip_address&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;google.com&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;updateRecord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;f00ae4e3ca8c3e318a68acc460e5f401&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;to_update&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Response -&amp;gt; {'id': 1, 'first_name': 'Vivyan', 'last_name': 'Treherne', 'email': 'jhon@email.com', 'ip_address': 'google.com'}
&lt;/span&gt;
&lt;span class="c1"&gt;# Deleting Record
&lt;/span&gt;&lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;removeRecord&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;collection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;record_key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's all you need to generate use your db. This is still in its very early stage of development so it may be unstable and may be subjected to change, so if you want to follow it updates you can follow it on GitHub or you can follow me here on dev.to.&lt;/p&gt;

&lt;p&gt;You can explore all its features at &lt;a href="https://ketanip.github.io/dbjson/main.html" rel="noopener noreferrer"&gt;https://ketanip.github.io/dbjson/main.html&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hope you guys like it. You can contribute it too at &lt;a href="https://github.com/ketanip/dbjson/" rel="noopener noreferrer"&gt;https://github.com/ketanip/dbjson/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>json</category>
      <category>database</category>
      <category>python</category>
      <category>nosql</category>
    </item>
    <item>
      <title>👨‍💻 Routing in Django ( Part 9 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Sun, 06 Dec 2020 15:47:27 +0000</pubDate>
      <link>https://dev.to/ketanip/routing-in-django-part-9-django-for-beginners-1lma</link>
      <guid>https://dev.to/ketanip/routing-in-django-part-9-django-for-beginners-1lma</guid>
      <description>&lt;p&gt;This post was originally posted here &lt;a href="https://www.ketaniralepatil.com/python/django/urls-in-django/"&gt;👨‍💻 Routing in Django ( Part 9 ) - Django For Beginners&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This is part of the series &lt;a href="https://www.ketaniralepatil.com/series/django-for-beginners/"&gt;Django For Beginners&lt;/a&gt; we are going to see about apps in app and we will see about urls in python. &lt;/p&gt;

&lt;p&gt;In this post we are going to learn all about urls in django,, let's get started. &lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding URLS in Django
&lt;/h3&gt;

&lt;p&gt;Let us first understand where we write our urls, we write our urls in our project folder in &lt;code&gt;urls.py&lt;/code&gt; file, as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt; &lt;span class="err"&gt;📂&lt;/span&gt; &lt;span class="err"&gt;myDjangoSite&lt;/span&gt;
    &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📂&lt;/span&gt; &lt;span class="err"&gt;myDjangoSite&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;__init__.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;asgi.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;settings.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;urls.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;wsgi.py&lt;/span&gt;
    &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;manage.py&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;urls.py&lt;/code&gt; specifically we write path for our django website in &lt;code&gt;urlpatterns&lt;/code&gt; list, in a patterns as shown below,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.urls&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;.&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;views&lt;/span&gt;

&lt;span class="n"&gt;urlpatterns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;''&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;views&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Home&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"home"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'about/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;views&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;About&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"about"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The syntax for path is as follows,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;view&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Where route is a string argument and denotes the relative path we want for that view. View is a &lt;code&gt;view&lt;/code&gt; it may be a class-base or a function-based view...&lt;/p&gt;

&lt;p&gt;Sorry to interrupt you, you can read this complete post here &lt;a href="https://www.ketaniralepatil.com/python/django/urls-in-django/"&gt;👨‍💻 Routing in Django ( Part 9 ) - Django For Beginners&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Handling Files in Python 🐍</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Fri, 04 Dec 2020 16:50:24 +0000</pubDate>
      <link>https://dev.to/ketanip/handling-files-in-python-3993</link>
      <guid>https://dev.to/ketanip/handling-files-in-python-3993</guid>
      <description>&lt;p&gt;This post was originally posted &lt;a href="https://bit.ly/handling-files-in-python"&gt;here&lt;/a&gt;, you can eat the complete post here.&lt;/p&gt;

&lt;p&gt;File handling is one of the most important part of a programmer's life let him/her be a data scientist, web developer or even a cyber security expert. So I have decided to write this post all about handling files in python. &lt;/p&gt;

&lt;p&gt;To open files and bring them in python we have the following syntax,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nb"&gt;file&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sb"&gt;`open(file_name, mode)`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To open a file in read mode we use the following syntax,  . The first argument is obviously the &lt;code&gt;file_name&lt;/code&gt; and the second one is a bit more interesting in  it is the mode in which you want to open the file and it determines whether we can &lt;code&gt;read&lt;/code&gt;,&lt;code&gt;append&lt;/code&gt;, &lt;code&gt;write&lt;/code&gt; , &lt;code&gt;open in binary&lt;/code&gt; and so on we will see it down.&lt;/p&gt;

&lt;p&gt;For the entirety of this blog post we are going to assume that our python file and our text file which we will be using to perform operations upon are located in the same folder, and the content of the text file is as follows, I have not written it just copied it from a random text generator online as I don't like lorem ipsum that much.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;readme.txt&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;He found himself holding onto the worst type. 
It was the type of secret that could gnaw away at your insides if you didn't tell someone about it, but it could end up getting you killed if you did.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reading Files
&lt;/h3&gt;

&lt;p&gt;Reading files in python is damn simple, let's understand it by an example, in this example we will be reading our text file readme.txt` and is located in the same folder as our python files is located.&lt;/p&gt;

&lt;p&gt;To open file in read mode we pass &lt;code&gt;'r'&lt;/code&gt;  place of mode in the &lt;code&gt;open&lt;/code&gt; file syntax, to read the the file don't worry about these modes I will provide a list at the end of the post with all of the them along with their functions.  &lt;/p&gt;

&lt;p&gt;&lt;code&gt;main.py&lt;/code&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file = open('readme.txt', 'r')

if file.mode == 'r':
    fileContent = file.read()
    print(fileContent)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;In above code we are opening a file in read mode and then checking whether it is open in read mode and if it is then we are reading the content of file by using &lt;code&gt;.read()&lt;/code&gt; method in it and then printing it. &lt;/p&gt;




&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://bit.ly/handling-files-in-python"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👨‍💻 Basics of Views and Routing in Django ( Part 8 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Sat, 28 Nov 2020 08:43:43 +0000</pubDate>
      <link>https://dev.to/ketanip/basics-of-views-and-routing-in-django-part-8-django-for-beginners-842</link>
      <guid>https://dev.to/ketanip/basics-of-views-and-routing-in-django-part-8-django-for-beginners-842</guid>
      <description>&lt;p&gt;This is part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to see about apps in app and we will see about models in django in this part.&lt;/p&gt;

&lt;p&gt;You can this read complete post &lt;a href="https://www.ketaniralepatil.com/python/django/urls-and-views-in-django/"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this post we are going to understand the idea of views and routing from scratch and see some types of responses and then we will learn about basic routing and to separate &lt;code&gt;urls.py&lt;/code&gt; in separate files files.&lt;/p&gt;

&lt;h2&gt;
  
  
  what are views ?
&lt;/h2&gt;

&lt;p&gt;Views are like middle man between request and response on your server they contain all you logic for a route, we will talk about route later in this post. They essentially process get the data needed for the request and process it and the return it as a response. This response can be of a variety of types, &lt;code&gt;text&lt;/code&gt;, &lt;code&gt;html&lt;/code&gt; , &lt;code&gt;json&lt;/code&gt; , &lt;code&gt;xml&lt;/code&gt; to name a few. &lt;/p&gt;

&lt;p&gt;Now let's see a example of a view,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.http&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;HttpResponse&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;home_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;HttpResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World 😊."&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I tried to make is as basic as possible. What is happening above is when we receive a request and we call this &lt;code&gt;view function&lt;/code&gt; it will return an simple text response, that is &lt;code&gt;Hello World 😊.&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;You may have noticed about &lt;code&gt;request&lt;/code&gt; argument in the &lt;code&gt;home_response&lt;/code&gt; view above it is compulsory argument it is a &lt;code&gt;dictionary&lt;/code&gt; object and contains lot, by lot, I mean really a lot of information about the request of which most of the times you are not going to use directly.  With &lt;code&gt;request&lt;/code&gt; object we can access headers, user agent, ip, cookies to name a few.&lt;/p&gt;

&lt;p&gt;In above example we returned &lt;code&gt;text&lt;/code&gt; response but it is not what happens in real world, right 🤔 ? In real world scenarios we need to either prove a html response or a &lt;code&gt;json&lt;/code&gt; or &lt;code&gt;xml&lt;/code&gt;  as a response.  So let us see how to pass &lt;code&gt;html&lt;/code&gt; as response for now.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.http&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;HttpResponse&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;home_response&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;HttpResponse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"&amp;lt;h1&amp;gt;Hello World 😊.&amp;lt;/h1&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Returning HTML Pages in Response
&lt;/h3&gt;

&lt;p&gt;I am lazy so I copied above code and just added &lt;code&gt;&amp;lt;h1&amp;gt;&amp;lt;/h1&amp;gt;&lt;/code&gt; tags around our plane text response and wallah, it is now a &lt;code&gt;html&lt;/code&gt; response but don't you think it would be bad for long  html responses with which we have to deal most of the times, so for that we keep &lt;code&gt;html&lt;/code&gt; away from &lt;code&gt;views&lt;/code&gt; all together so to keep code clean and follow the &lt;code&gt;DRY&lt;/code&gt; principle .  &lt;/p&gt;

&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://www.ketaniralepatil.com/python/django/urls-and-views-in-django/"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👨‍💻 Queries in Django ( Part 7 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Sat, 21 Nov 2020 18:51:19 +0000</pubDate>
      <link>https://dev.to/ketanip/queries-in-django-part-7-django-for-beginners-588c</link>
      <guid>https://dev.to/ketanip/queries-in-django-part-7-django-for-beginners-588c</guid>
      <description>&lt;p&gt;This is part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to see about apps in app and we will see about models in django in this part.&lt;/p&gt;

&lt;p&gt;In this post we are going to learn a lot queries in django. I recommend you to read last post  so as it will be easy to understand context of this post , now let's get started.&lt;/p&gt;

&lt;p&gt;These are the &lt;code&gt;models&lt;/code&gt; which we are going to use for most part in this post,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.db&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.utils&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;timezone&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;djnago.contrib.auth.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CharField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;created_at&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DateTimeField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;timezone&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;author&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ForeignKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Author'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_delete&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;related_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"author"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;likes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;related_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"likes"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;dislikes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;related_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"dislikes"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;likes_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PositiveIntegerField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;dislikes_count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PositiveIntegerField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;rating&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DecimalField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_digits&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;decimal_places&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Author&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OneToOneField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_delete&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;liked_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;related_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"liked_posts"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;disliked_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;related_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"disliked_posts"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Get All
&lt;/h4&gt;

&lt;p&gt;To get all data of the model we use this query, it is not used most often as it costs a lot of resources if data is large and it is always a good practice to limit the query results which we will see how to do after this,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;all_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;syntax = &lt;code&gt;ModelName.objects.all()&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Limit Query Results
&lt;/h4&gt;

&lt;p&gt;To limit results of any query we add &lt;code&gt;[ start_count : end_count ]&lt;/code&gt;  to get results from &lt;code&gt;start_count&lt;/code&gt; and &lt;code&gt;end_count&lt;/code&gt; you can also use &lt;code&gt;[ : end_count ]&lt;/code&gt; to get results from &lt;code&gt;0&lt;/code&gt;  to &lt;code&gt;end_count&lt;/code&gt;. Let's see an example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;only_five_posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()[:&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The above query will give &lt;code&gt;5&lt;/code&gt; results only as index start from &lt;code&gt;0&lt;/code&gt; and till &lt;code&gt;4&lt;/code&gt;  it would be five results.&lt;/p&gt;

&lt;h4&gt;
  
  
  Get Query
&lt;/h4&gt;

&lt;p&gt;There is situation many times when we want to retrieve only one result from the query with exact match of fields for such situations we use get query, let me show you an example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;one_post&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Post&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;syntax = &lt;code&gt;ModelName.objects.get( pass_keyword_arguments )&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://www.ketaniralepatil.com/python/django/queries-in-django/"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👨‍💻 Basic operations on Models In Django ( Part 6 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Tue, 17 Nov 2020 04:31:04 +0000</pubDate>
      <link>https://dev.to/ketanip/basic-operations-on-models-in-django-part-6-django-for-beginners-5636</link>
      <guid>https://dev.to/ketanip/basic-operations-on-models-in-django-part-6-django-for-beginners-5636</guid>
      <description>&lt;p&gt;This is part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to see about apps in app and we will see about models in django in this part.&lt;/p&gt;

&lt;p&gt;In this post we are going to learn about queries in django. When we use django we do not need to write SQL Queries it is done by django itself, we write super user friendly  syntax for the queries ,&lt;/p&gt;

&lt;p&gt;Let's see we want to get all the objects in a model ( note each model is a table, it may be more depending on the type of relation used while creating it ), let the schema of this model be simple it will be as follows,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.db&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt;       &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CharField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;createdAt&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DateTimeField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;timezone&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;orders&lt;/span&gt;      &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;PositiveItegerField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now to get it all we use the following syntax,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;allBooks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;all&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and that's it will return all the books of QueryList form.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to run Queries in Django ?
&lt;/h3&gt;

&lt;p&gt;I should have told it first I know but I told it now because you should understand how easy it is to write queries in django. Now let's see how to run them,&lt;/p&gt;

&lt;p&gt;There are two ways,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Interactive Way ( in command line ).&lt;/li&gt;
&lt;li&gt;In any python file.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  Interactive Way
&lt;/h4&gt;

&lt;p&gt;To use it interactively just go to your root directory of your django project and type the following command to start the interactive  console,&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 shell
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will start the interactive console from which you can import any model in the project, you can access all of the project files. Also you can also import normal python libraries.&lt;/p&gt;

&lt;h4&gt;
  
  
  Regular Way
&lt;/h4&gt;

&lt;p&gt;You can import models to any file in the project and can use it as per your will and in later part of this series we are going to use in this way in &lt;code&gt;views.py&lt;/code&gt; to write &lt;code&gt;views&lt;/code&gt; for our website.&lt;/p&gt;




&lt;p&gt;Now let's see the basic operations on models,,&lt;/p&gt;

&lt;h3&gt;
  
  
  To Create New Model Object
&lt;/h3&gt;

&lt;p&gt;To create new model object we first import it and then we use create method which is build in model on it and create it. Let me show a example to you,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;myapp.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Book&lt;/span&gt;

&lt;span class="n"&gt;newBook&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Harry Potter - Some Part"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Don't you know it ?"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;newBook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you may have seen that creating models is simple damn simple. We just need to pass values in &lt;code&gt;objects.create&lt;/code&gt; method of that model and store it in variable and than use save method on it. It is as simple as it could get.&lt;/p&gt;

&lt;p&gt;You may have seen that I have not passed certain parameters, such as &lt;code&gt;createdAt&lt;/code&gt; and &lt;code&gt;orders&lt;/code&gt;, because we have provided &lt;code&gt;default&lt;/code&gt;  values to it. But we can also pass it. Let me show you how,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;myapp.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Book&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;random&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;randint&lt;/span&gt;

&lt;span class="n"&gt;currentDateTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;randint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;newBook&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Book&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;objects&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Harry Potter - Some Part"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"Don't you know it ?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;createdOn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;currentDateTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;newBook&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how it is done. You may have seen that I have passed &lt;code&gt;createdOn&lt;/code&gt; in third place but while creating model it was in 2^nd^ place I did it to show that order in which you pass these keyword arguments doesn't matter.&lt;/p&gt;




&lt;h3&gt;
  
  
  Query The Object
&lt;/h3&gt;

&lt;p&gt;Now comes the part of querying the model, here I will cover basics as querying is a very big topic, with the part I cover here would e more than enough for many project , at least in the beginning. Now let's start,&lt;/p&gt;

&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://www.ketaniralepatil.com/python/django/basic-operations-on-models/"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>💻 Exploring Django Project Structure ( Part 3 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Sat, 14 Nov 2020 16:37:30 +0000</pubDate>
      <link>https://dev.to/ketanip/exploring-django-project-structure-part-3-django-for-beginners-5aoe</link>
      <guid>https://dev.to/ketanip/exploring-django-project-structure-part-3-django-for-beginners-5aoe</guid>
      <description>&lt;p&gt;In this part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to explore project struture of a new &lt;code&gt;Django&lt;/code&gt; project which we create in last part check it out &lt;a href="https://dev.to/python/django/how-to-install-django/"&gt;here&lt;/a&gt; after installing &lt;code&gt;Django&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;The poject structure should look something like this,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;
 &lt;span class="err"&gt;📂&lt;/span&gt; &lt;span class="err"&gt;myDjangoSite&lt;/span&gt;
    &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📂&lt;/span&gt; &lt;span class="err"&gt;myDjangoSite&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;__init__.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;asgi.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;settings.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;urls.py&lt;/span&gt;
        &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;wsgi.py&lt;/span&gt;
    &lt;span class="err"&gt;-&lt;/span&gt; &lt;span class="err"&gt;📄&lt;/span&gt; &lt;span class="err"&gt;manage.py&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://www.ketaniralepatil.com/python/django/exploring-django-project-structure/"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>django</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Models In Django</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Tue, 10 Nov 2020 15:51:06 +0000</pubDate>
      <link>https://dev.to/ketanip/models-in-python-3jcg</link>
      <guid>https://dev.to/ketanip/models-in-python-3jcg</guid>
      <description>&lt;p&gt;This is part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to see about apps in app and we will see about models in django in this part.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are models ?
&lt;/h2&gt;

&lt;p&gt;Models play an important role in django, it makes it what it is. Models is the way to represent our database in a pretty form. We can also change databases without any changes to models in django, and we use these models to query our database. Models make life easy. &lt;/p&gt;

&lt;p&gt;We define models for our application in &lt;a href="https://dev.to/python/django/apps-in-django/"&gt;apps&lt;/a&gt; in &lt;code&gt;models.py&lt;/code&gt; file. Now let's see the example, in this example we are going to design a model for a &lt;code&gt;blog post&lt;/code&gt; and &lt;code&gt;tags&lt;/code&gt; associated with blog post. In real-life scenario you can also you libraries such as &lt;code&gt;django-taggit&lt;/code&gt; for tagging the blog post and to do the heavy lifting for us. Now let's see the example,&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.db&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.utils&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;timezone&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;django.contrib.auth.models&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;User&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Blog&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CharField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;post&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;TextField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;slug&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SlugField&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;tags&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Tag'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;createdAt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DateTimeField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;timezone&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;createdBy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ForeignKey&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;User&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;on_delete&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CASCADE&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Model&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;tag&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;CharField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;max_length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;createdAt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DateTimeField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auto_now&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;blogs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ManyToManyField&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Blog&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blank&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sorry to interrupt you but I want to tell you one thing that I have started a small blog you may continue reading it &lt;a href="https://www.ketaniralepatil.com/python/django/models-in-django/"&gt;here&lt;/a&gt; it will help me a lot.&lt;/p&gt;

</description>
      <category>python</category>
      <category>django</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👨‍💻 Getting Started With Django ( Part 1 ) - Django For Beginners</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Tue, 20 Oct 2020 16:08:38 +0000</pubDate>
      <link>https://dev.to/ketanip/getting-started-with-django-part-1-django-for-beginners-35p8</link>
      <guid>https://dev.to/ketanip/getting-started-with-django-part-1-django-for-beginners-35p8</guid>
      <description>&lt;p&gt;This post was originally posted on &lt;a href="https://www.ketaniralepatil.com/python/django/getting-started-with-django/"&gt;👨‍💻 Getting Started With Django ( Part 1 ) - Django For Beginners&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Django
&lt;/h2&gt;

&lt;p&gt;This is first part of the series &lt;a href="https://bit.ly/django-for-beginners"&gt;Django For Beginners&lt;/a&gt; we are going to see an introduction to Django, we will then see about why to use django, and then its design philosophies then we will see about advantages of django and at last we will which comanies uses django.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Django ?
&lt;/h3&gt;

&lt;p&gt;Django is a high-level web framework written in Python. It encourages clean and rapid development. It takes all the burden of handeling complicated tasks on itself and provides developer with a rich hassel free delevlopment experince .&lt;/p&gt;




&lt;h3&gt;
  
  
  Why Django ?
&lt;/h3&gt;

&lt;p&gt;Well Django is a complete framework, here are some resons why you should use django,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;It is &lt;strong&gt;fast&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It is &lt;strong&gt;secure&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Encourages &lt;strong&gt;rapid development&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;It is &lt;strong&gt;scalable&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete&lt;/strong&gt; Framework.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Design Philosophies
&lt;/h3&gt;

&lt;p&gt;Django follows certain design philosophies, some of them are,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Being Decoupled&lt;/strong&gt; :  Django aims and encourages each element of the project independent of each other as it becomes easy to maintain the project and an single element can be exported and used in other project easily.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Quick Development&lt;/strong&gt; : Django was made in mind to provide a fast and rich development experice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Don't Repeat Yourself (DRY)&lt;/strong&gt; : Django follows DRY, which literally means not repeating code, one of the ways of doing this is by de-coupling elements in an application and using them in a efficient way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Clean Design&lt;/strong&gt; : Django strictly maintains the project design in such a way that it makes it easy to follow best practices.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Advantages of Django.
&lt;/h3&gt;

&lt;p&gt;There are many advantages of django for the sake of this blog here are some the big once,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Django ORM&lt;/strong&gt; : Django ORM is Django's biggest power, well all can agree to it. It suppport most of the popular &lt;strong&gt;SQL&lt;/strong&gt; databases. It creates and manages the database without any manual intervensions in a very optimized way. It can also be used with &lt;strong&gt;NO-SQL&lt;/strong&gt; database with the help of third-party libraries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Administration GUI&lt;/strong&gt; : Django comes with a powerful admin interface right out of the box. It supports all kind of CRUD operations on the database right from admin panel. It has a beautiful interface. It can even be customized according to once needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Build-in Framework Support&lt;/strong&gt; : Django supports many frameworks like RSS Feeds, AJAX and many more out of the box.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Powerful Third Party Package Ecosystem&lt;/strong&gt; : For django you can find third party package for literally any thing, wanna handle &lt;code&gt;payments&lt;/code&gt; use &lt;code&gt;dj-stripe&lt;/code&gt;, wanna use &lt;code&gt;social auth&lt;/code&gt; use &lt;code&gt;django-allauth&lt;/code&gt;, want &lt;code&gt;REST API&lt;/code&gt; use &lt;code&gt;django-rest-framework&lt;/code&gt; and many more. As you may have seen there are lierally frameworks build on django itself so what do you want more. On &lt;a href="https://djangopackages.org"&gt;Django Packages.org&lt;/a&gt; you can find packages for your django porject.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Development Enviorment&lt;/strong&gt; : Django comes with a development server right out of the box that does't require any kind of configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Changing Database is Super Easy&lt;/strong&gt; : In django changing databases is super easy you can use &lt;code&gt;sqlite3&lt;/code&gt; for development and change production database to &lt;code&gt;postgres&lt;/code&gt; within seconds. Before some of you may say &lt;em&gt;what about data&lt;/em&gt;, then listen if you are doing this in production than data is your duty.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Who Uses Django ?
&lt;/h3&gt;

&lt;p&gt;Now the famous question, &lt;code&gt;who uses django ?&lt;/code&gt;. Django is used by a variety of people for a variety of purposes. It is used by management systems, social networks, scientific computing platforms. Let me name a few,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Instagram&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Disqus&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pinterest&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;National Geographic&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Spotify&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;YouTube&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Washington Post&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BitBucket&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DropBox&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Quora&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;and many more...&lt;/p&gt;




&lt;p&gt;You can support me by checking out &lt;a href="https://www.ketaniralepatil.com/series/django-for-beginners/"&gt;Django For Beginners&lt;/a&gt; Series. &lt;/p&gt;

</description>
      <category>django</category>
      <category>python</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🍪 Cookies in Flask 🍾</title>
      <dc:creator>KetanIP</dc:creator>
      <pubDate>Tue, 13 Oct 2020 06:16:43 +0000</pubDate>
      <link>https://dev.to/ketanip/cookies-in-flask-2e6h</link>
      <guid>https://dev.to/ketanip/cookies-in-flask-2e6h</guid>
      <description>&lt;h2&gt;
  
  
  What are cookies ?
&lt;/h2&gt;

&lt;p&gt;Cookies are a kind of storage, but a very small storage. It is mainly used to store small information such as csrf_token, login credentials ( encrypeted ), preferences, site statics and/or user activities. By using cookies one can provide an immersive experice to the users of the websites by making the website more personalized for them.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use "Cookies" in Flask ?
&lt;/h2&gt;

&lt;p&gt;In flask using cookies is super simple. In flask cookies are Immutable Dictionary, we can also call as a dictionary. To view the value of the &lt;code&gt;request.cookies&lt;/code&gt; attribute it will return an dictionary object. Let's see an understand it with an example,&lt;/p&gt;

&lt;p&gt;app.py&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;make_response&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;url_for&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;home&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="n"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cookies&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s"&gt;"Hello &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;userName&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;."&lt;/span&gt; 
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;redirect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url_for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"setName"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Continue reading here &lt;a href="https://www.ketaniralepatil.com/python/flask/cookies-in-flask/"&gt;🍪 Cookies in Flask 🍾&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

</description>
      <category>flask</category>
      <category>webdev</category>
      <category>python</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
