Search icon CANCEL
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Conferences
Free Learning
Arrow right icon
Django 2 Web Development Cookbook
Django 2 Web Development Cookbook

Django 2 Web Development Cookbook: 100 practical recipes on building scalable Python web apps with Django 2 , Third Edition

Arrow left icon
Profile Icon Jake Kronika Profile Icon Aidas Bendoraitis
Arrow right icon
€18.99 per month
Full star icon Full star icon Full star icon Full star icon Empty star icon 4 (6 Ratings)
Paperback Oct 2018 544 pages 3rd Edition
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m
Arrow left icon
Profile Icon Jake Kronika Profile Icon Aidas Bendoraitis
Arrow right icon
€18.99 per month
Full star icon Full star icon Full star icon Full star icon Empty star icon 4 (6 Ratings)
Paperback Oct 2018 544 pages 3rd Edition
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m
eBook
€20.98 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Django 2 Web Development Cookbook

Database Structure and Modeling

In this chapter, we will cover the following topics:

  • Using model mixins
  • Creating a model mixin with URL-related methods
  • Creating a model mixin to handle creation and modification dates
  • Creating a model mixin to take care of meta tags
  • Creating a model mixin to handle generic relations
  • Handling multilingual fields
  • Enabling schema microdata enhancements
  • Using migrations
  • Switching from South migrations to Django migrations
  • Changing a foreign key to the many-to-many field

Introduction

When you start a new app, the first thing that you do is create the models that represent your database structure. We are assuming that you have already created Django apps, or, at the very least, have read and understood the official Django tutorial. In this chapter, you will see a few interesting techniques that will make your database structure consistent throughout the different apps in your project. Then, you will see how to create custom model fields, in order to handle the internationalization of the data in your database. At the end of the chapter, you will see how to use migrations to change your database structure during the process of development.

Using model mixins

In object-oriented languages, such as Python, a mixin class can be viewed as an interface with implemented features. When a model extends a mixin, it implements the interface and includes all of its fields, properties, and methods. The mixins in Django models can be used when you want to reuse the generic functionalities in different models multiple times.

Getting ready

First, you will need to create reusable mixins. A good place to keep your model mixins is in a utils module, such as the one that we will create later in the chapter (along with some typical examples of mixins). If you create a reusable app that you will share with others, keep the model mixins in the reusable app, instead—possibly...

Creating a model mixin with URL-related methods

For every model that is appropriate to detail on its own distinct page, it is a good practice to define the get_absolute_url() method. This method can be used in templates, and also in the Django admin site, to preview the saved object. However, get_absolute_url() is ambiguous, as it returns the URL path instead of the full URL.

In this recipe, we will look at how to create a model mixin that provides simplified support for model-specific URLs. This mixin will:

  • Allow you to define either the URL path or the full URL in your model
  • Generate the other of these automatically based on the one you define
  • Define the get_absolute_url() method behind the scenes

Getting ready

If you...

Creating a model mixin to handle creation and modification dates

It is common to include timestamps in your models, for the creation and modification of your model instances. In this recipe, you will learn how to create a simple model mixin that saves the creation and modification dates and times for your model. Using such a mixin will ensure that all of the models use the same field names for the timestamps, and have the same behaviors.

Getting ready

If you haven't yet done so, create the utils package to save your mixins. Then, create the models.py file in the utils package.

How to do it...

...

Creating a model mixin to take care of meta tags

When you optimize your site for search engines, you not only have to use semantic markup for each page, but you also have to include appropriate meta tags. For maximum flexibility, it helps to have a way to define content for common meta tags, specific to objects that have their own detail pages on your website. In this recipe, we will look at how to create a model mixin for the fields and methods related to keyword, description, author, and copyright meta tags.

Getting ready

As detailed in the previous recipes, make sure that you have the utils package for your mixins. Also, create a directory structure, templates/utils, under the package, and inside of that, create a meta...

Creating a model mixin to handle generic relations

Aside from normal database relationships, such as a foreign-key relationship or a many-to-many relationship, Django has a mechanism to relate a model to an instance of any other model. This concept is called generic relations. For each generic relation, there is a content type of the related model that is saved, as well as the ID of the instance of that model.

In this recipe, we will look at how to abstract the creation of generic relations in the model mixins.

Getting ready

For this recipe to work, you will need to have the contenttypes app installed. It should be in the INSTALLED_APPS directory, by default, as shown in the following code:

# settings.py or config/base.py
INSTALLED_APPS...

Handling multilingual fields

Django uses the internationalization mechanism to translate verbose strings in the code and templates. However, it's up to the developer to decide how to implement the multilingual content in the models. There are several third-party modules that handle translatable model fields; however, I prefer the simple solution that will be introduced to you in this recipe.

The advantages of the approach that you will learn about are as follows:

  • It is straightforward to define multilingual fields in the database.
  • It is simple to use the multilingual fields in database queries.
  • You can use contributed administration to edit models with the multilingual fields, without additional modifications.
  • If you need it, you can easily show all of the translations of an object in the same template.
  • You can use database migrations to add or remove languages.
...

Enabling schema microdata enhancements

The content delivered in a web application is generally very rich, but there are often important details embedded within plain human-readable text, and search engines cannot easily understand them. When such additional information becomes available, though, search result entries for the content can be similarly enriched, increasing SEO rankings and making it easier for users to find what they are looking for.

Part of this is the data that we exposed in the Creating a model mixin to take care of meta tags recipe, earlier in the chapter; however, for certain types of objects, you can build something even more structured. To make this possible, you can identify schema microdata, as per the https://schema.org specification, for objects that are represented in the application. In this recipe, we will approach the creation of a model mixin for...

Using migrations

It is not true that once you have created your database structure, it won't change in the future. As development happens iteratively, you can get updates on the business requirements in the development process, and you will have to perform database schema changes along the way. With Django migrations, you don't have to change the database tables and fields manually, as most of it is done automatically, using the command-line interface.

Getting ready

Activate your virtual environment or Docker project in the command-line tool.

How to do it...

...

Switching from South migrations to Django migrations

If you were using Django before version 1.7 introduced database migrations into the core functionality, you have more than likely used third-party South migrations before. In this recipe, you will learn how to switch your project from South migrations to Django migrations.

Getting ready

Make sure that all apps, along with their South migrations, are up to date.

How to do it...

Execute the following steps:

  1. Migrate all of your apps to the latest South migrations, as follows:
(myproject_env)$ python3 manage.py migrate...

Changing a foreign key to the many-to-many field

This recipe is a practical example of how to change a many-to-one relation to a many-to-many relation, while preserving the already existing data. We will use both schema and data migrations in this situation.

Getting ready

Let's suppose that you have the Idea model, with a foreign key pointing to the Category model, as follows:

# demo_app/models.py 
from django.db import models 
from django.utils.translation import ugettext_lazy as _ 
 
class Category(models.Model):
    title = models.CharField(_("Title"), max_length=200)

    def __str__(self):
        return self.title
 
class Idea(models.Model):
    title = model.CharField(
_("Title"),
...
Left arrow icon Right arrow icon

Key benefits

  • Discover solutions to a variety of web application scenarios, leveraging the power of the Django framework
  • Understand URL routing, models, forms, templates, and RESTful services with Django 2.14
  • Test, deploy, and scale your web applications efficiently with Amazon Web Services

Description

Django is a framework designed to balance rapid web development with high performance. It handles high levels of user traffic and interaction, integrates with a variety of databases, and collects and processes data in real time. This book follows a task-based approach to guide you through developing with the Django 2.1 framework, starting with setting up and configuring Docker containers and a virtual environment for your project. You'll learn how to write reusable pieces of code for your models and manage database changes. You'll work with forms and views to enter and list data, applying practical examples using templates and JavaScript together for the optimum user experience. This cookbook helps you to adjust the built-in Django administration to fit your needs and sharpen security and performance to make your web applications as robust, scalable, and dependable as possible. You'll also explore integration with Django CMS, the popular content management suite. In the final chapters, you'll learn programming and debugging tricks and discover how collecting data from different sources and providing it to others in various formats can be a breeze. By the end of the book, you'll learn how to test and deploy projects to a remote dedicated server and scale your application to meet user demands.

Who is this book for?

This book is designed for Python developers working on fast and secure web apps that can scale over time. You’ll also find this book useful if you want to upgrade to latest Django framework. A background in Python 3 along with basic knowledge of the Django framework will be useful.

What you will learn

  • Get started with the basic configuration necessary to start any Django project
  • Build a database structure out of reusable model mixins
  • Secure web applications against malicious usage and address common performance bottlenecks
  • Integrate with, and extend, the Django CMS
  • Construct and manage complex and deep hierarchies
  • Import data from local sources and external web services and export it to third parties

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Oct 31, 2018
Length: 544 pages
Edition : 3rd
Language : English
ISBN-13 : 9781788837682
Vendor :
Django
Languages :
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : Oct 31, 2018
Length: 544 pages
Edition : 3rd
Language : English
ISBN-13 : 9781788837682
Vendor :
Django
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 115.97
Django Design Patterns and Best Practices
€36.99
Django 2 Web Development Cookbook
€36.99
Django 2 by Example
€41.99
Total 115.97 Stars icon

Table of Contents

13 Chapters
Getting Started with Django 2.1 Chevron down icon Chevron up icon
Database Structure and Modeling Chevron down icon Chevron up icon
Forms and Views Chevron down icon Chevron up icon
Templates and JavaScript Chevron down icon Chevron up icon
Customizing Template Filters and Tags Chevron down icon Chevron up icon
Model Administration Chevron down icon Chevron up icon
Security and Performance Chevron down icon Chevron up icon
Django CMS Chevron down icon Chevron up icon
Hierarchical Structures Chevron down icon Chevron up icon
Importing and Exporting Data Chevron down icon Chevron up icon
Bells and Whistles Chevron down icon Chevron up icon
Testing and Deployment Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Top Reviews
Rating distribution
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
(6 Ratings)
5 star 66.7%
4 star 0%
3 star 16.7%
2 star 0%
1 star 16.7%
Filter icon Filter
Top Reviews

Filter reviews by




R. Truman Jan 11, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Django 2 Web Development Cookbook is well organized and very detailed. This is a reference guide you'll want on hand or a great place to start if you are new to developing with Django. Jake even takes the time to explore and detail setting up your environment and covers a variety of approaches for doing so. If you are looking for a book that will help expand your knowledge and improve your Django 2 development, start here.
Amazon Verified review Amazon
MMenon Nov 28, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I liked this book. People who are interested in Phython, Docker & Django will most probably be interested in reading this book. Readers can gain knowledge. This book was very well written with ample examples and sample codes.
Amazon Verified review Amazon
Charudatta Katdare Dec 20, 2018
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Using the book for a month now and have to save most of the scenarios required for development in Django are covered. The examples provided are very useful and explanation concise. The book should benefit both beginners and advanced developers in Django.
Amazon Verified review Amazon
C.J.S. Hayward Jan 16, 2019
Full star icon Full star icon Full star icon Full star icon Full star icon 5
I'm biased in regards to reviewing this book. I've worked with Jake Kronika in the past and I would work with him again in a heartbeat.That stated, the book so far as I have read it is an authoritative, comprehensive, decisive guide that is better than anything technical I've written (but see my author bookshelf for mostly non-IT works, some of which have good reviews ).I have looked through the title briefly, and I regard my free review copy as an informational windfall. I've looked at it a bit, and I expect I'll be diving in full force next Django project!
Amazon Verified review Amazon
Cavatica Sep 19, 2019
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
Not what I was looking for or expected. Amazon says "a basic understanding of the Django framework will be beneficial", but the book says go read the standard Django tutorial. And the first chapter is about virtualenv and docker and gets bogged down at the Unix command line, in all kinds of configuration minutiae.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.