{"id":7244,"date":"2021-01-11T18:25:11","date_gmt":"2021-01-11T17:25:11","guid":{"rendered":"https:\/\/blog.via-internet.de\/?p=7244"},"modified":"2021-10-22T12:08:07","modified_gmt":"2021-10-22T10:08:07","slug":"django-cookbook-2","status":"publish","type":"post","link":"https:\/\/via-internet.de\/blog\/2021\/01\/11\/django-cookbook-2\/","title":{"rendered":"Django | Cookbook"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install current Version (3.2.8)<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u276f pip install django==3.2.8<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Install next Version (4.0)<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u276f pip install --pre django<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Check installed version<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u276f python -m django --version<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\u276f django-admin.exe version<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">First steps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The following steps are based on a summary of the <a href=\"https:\/\/docs.djangoproject.com\/en\/3.0\/intro\/tutorial01\/\">Django Tutorial<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Create project<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">django-admin startproject main\ncd working_with_django\npython manage.py migrate\npython manage.py runserver 8080\npython manage.py startapp app_base<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create view<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Create view in <strong>app_base\/views.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.http import HttpResponse\n\ndef index(request):\n    return HttpResponse(\"Hello, world. You're at the polls index.\")<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add view to  <strong>app_base\/urls.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.index, name='index'),\n]<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add urls to project <strong>main\/urls.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"5\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.contrib import admin\nfrom django.urls import include, path\n\nurlpatterns = [\n    path('admin\/', admin.site.urls),\n    path('app_base\/', include('app_base.urls')),\n]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create admin user<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py createsuperuser\nUsername (leave blank to use 'user'): admin\nEmail address: admin@localhost\nPassword: \nPassword (again): \nSuperuser created successfully.<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create data and database<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Create database model in <strong>app_base\/models.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.db import models\n\nclass Question(models.Model):\n    question_text = models.CharField(max_length=200)\n    pub_date = models.DateTimeField('date published')\n\nclass Choice(models.Model):\n    question = models.ForeignKey(Question, on_delete=models.CASCADE)\n    choice_text = models.CharField(max_length=200)\n    votes = models.IntegerField(default=0)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Activating models in <strong>main\/settings.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">INSTALLED_APPS = [\n    'app_base.apps.AppBaseConfig',\n\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n]<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py makemigrations app_base\n$ python manage.py sqlmigrate app_base 0001<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Make  app modifiable in the admin  (<strong>app_base\/admin.py<\/strong>)<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.contrib import admin\nfrom .models import Question\n\nadmin.site.register(Question)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Writing more views <\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Create views in <strong>app_base\/views.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def detail(request, question_id):\n    return HttpResponse(\"You're looking at question \n\ndef results(request, question_id):\n    response = \"You're looking at the results of question \n    return HttpResponse(response \n\ndef vote(request, question_id):\n    return HttpResponse(\"You're voting on question \n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add new views into <code>app_base\/urls.py<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.index, name='index'),\n\n    path('&lt;int:question_id>\/', views.detail, name='detail'),\n    path('&lt;int:question_id>\/results\/', views.results, name='results'),\n    path('&lt;int:question_id>\/vote\/', views.vote, name='vote'),\n]<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add template in app_base\/templates\/polls\/index.html<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    &lt;ul>\n    {\n        &lt;li>&lt;a href=\"\/polls\/{{ question.id }}\/\">{{ question.question_text }}&lt;\/a>&lt;\/li>\n    {\n    &lt;\/ul>\n{\n    &lt;p>No polls are available.&lt;\/p>\n{\n\n\n\n<h4 class=\"wp-block-heading\">Modify view in <strong>app_base\/views.py<\/strong><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.shortcuts import render\n...\ndef index(request):\n    latest_question_list = Question.objects.order_by('-pub_date')[:5]\n    context = {'latest_question_list': latest_question_list}\n    return render(request, 'polls\/index.html', context)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Raising a 404 error in app_base\/views.py<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.http import HttpResponse\nfrom django.shortcuts import render, get_object_or_404\n\nfrom .models import Question\n# ...\ndef detail(request, question_id):\n    question = get_object_or_404(Question, pk=question_id)\n    return render(request, 'polls\/detail.html', {'question': question})<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create template <code>app_base\/templates\/polls\/detail.html<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;h1>{{ question.question_text }}&lt;\/h1>\n&lt;ul>\n{\n    &lt;li>{{ choice.choice_text }}&lt;\/li>\n{\n&lt;\/ul><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Removing hardcoded URLs in <code>app_base\/templates\/polls\/index.html<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"test\" data-enlighter-group=\"\">&lt;li>\n   &lt;a href=\"{\n&lt;\/li><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The way this works is by looking up the URL definition as specified in the&nbsp;app_base\/urs.py<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">...\n# the 'name' value as called by the {\npath('&lt;int:question_id>\/', views.detail, name='detail'),\n...<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Namespacing URL names in <code>app_base\/urls.py<\/code><\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">app_name = 'app_base'\n\nurlpatterns = [\n...<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Then, modify link in <code>app_base\/templates\/polls\/index.html<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">from <strong>url &#8216;detail&#8217;<\/strong> to <strong>url &#8216;app_base:detail&#8217;<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;li>\n    &lt;a href=\"{\n&lt;\/li><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Use generic views: Less code is better<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Create class in <code>a<\/code>pp_views\/views.py<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">class HomeView(generic.TemplateView):\n    template_name = 'index.html'<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Create template <code>app_views\/templates\/index.html<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;h1>App Views:&lt;\/h1>\nWelcome<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Modify <code>app_views\/urls.py<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"2\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">urlpatterns = [\n    path('', views.HomeView.as_view(), name='home'),\n]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add another app to main project<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Create app<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py startapp app_view\n<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Modify <code>main\/urls.py<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">urlpatterns = [\n    path('admin\/',     admin.site.urls),\n    path('app_base\/',  include('app_base.urls')),\n    path('app_views\/', include('app_views.urls')),\n]<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Add data model in <code>app_views\/models.py<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.db import models\n\nclass DataItem(models.Model):\n    text = models.CharField(max_length=200)\n    data = models.IntegerField(default=0)\n\n    def __str__(self):\n        return self.text<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Register data in <code>app_views\/admin.py<\/code><\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.contrib import admin\nfrom .models import DataItem\n\nadmin.site.register(DataItem)<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Activate models<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py makemigrations app_views\n$ python manage.py sqlmigrate app_views 0001\n$ python manage.py migrate app_views<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Navigation \/ Redirection<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Set root page of Django project<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When accessing your Django project, the root page will normaly doesn&#8217;n show your app homepage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To change this, you hate to modiy the url handling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the following sample, replace &lt;appname&gt; with the name of your app<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Define a redirection view in your app (<strong>\/&lt;appname&gt;\/urls.py<\/strong>)<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">def redirect_to_home(request):\n    return redirect('\/&lt;appname>')<\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Define path in the global urls.py  (<strong>\/main\/urls.py<\/strong>)<\/h4>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"3,5,8\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">from django.contrib import admin\nfrom django.urls import include, path\nfrom django.shortcuts import redirect\n\nfrom &lt;appname> import views\n\nurlpatterns = [\n    path('',            views.redirect_to_home, name='home'),\n    path('&lt;appname>\/',  include('&lt;appname>.urls')),\n    path('admin\/',      admin.site.urls)\n]<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Highlight current page in navigation menu<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;div class=\"list-group\">\n    &lt;a href=\"{\n            Basic Upload\n    &lt;\/a>\n    &lt;a href=\"{\n            Progress Bar Upload\n    &lt;\/a>\n&lt;\/div><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Using PostgresSQL Database<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Install PostgresSQL<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">Create Superuser<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">createuser.exe --interactive --pwprompt<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Logging<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><\/h3>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Additional reading<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Tutorials<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/realpython.com\/django-redirects\/\">https:\/\/realpython.com\/django-redirects\/<\/a><\/li><li><a href=\"https:\/\/django-best-practices.readthedocs.io\/en\/latest\/\">https:\/\/django-best-practices.readthedocs.io\/en\/latest\/<\/a><\/li><li><a href=\"https:\/\/www.geeksforgeeks.org\/tag\/python-django\/\">https:\/\/www.geeksforgeeks.org\/tag\/python-django\/<\/a><\/li><li><a href=\"https:\/\/www.django-rest-framework.org\">https:\/\/www.django-rest-framework.org<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Testing<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/tox.readthedocs.io\/en\/latest\/#\">https:\/\/tox.readthedocs.io\/en\/latest\/#<\/a><\/li><\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Blogs and Posts<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/medium.com\/@humble_bee\/django-basics-for-a-beginner-5d864e6aa084\">Django Basics for a Beginner<\/a> at medium.com<\/li><li><a href=\"https:\/\/data-flair.training\/blogs\/django-quiz\/\">Django Quiz<\/a><\/li><li><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Resolving problems<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Wrong template is used<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The template system is using a search approach to find the specified template file, e.g. &#8216;home.html&#8217;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you created more than one apps with the same filenames for templates, the first one will be used.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Change the template folders and add the app name, e.g. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">template\/\n        app_base\/\n                home.html<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Resolving error messages and erors<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">&#8216;app_name&#8217; is not a registered namespace<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">One reason for this error is the usage of a namespace in a link.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"html\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Back to &lt;a href=\"{\n\n\n\n<p class=\"wp-block-paragraph\">If you want to use this way of links, you have to define the namespace\/appname in your <code>&lt;app&gt;\/urls.py<\/code> file<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"\" data-enlighter-highlight=\"1\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">app_name = 'app_views'\nurlpatterns = [\n    path('', views.HomeView.as_view(), name='home'),\n]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">dependencies reference nonexistent parent node<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>Recreate database and migration files<\/li><li>Remove all migration files under *\/migrations\/00*.py<\/li><li>Remove all pycache folders under *\/__pycache__ and *\/*\/__pycache__<\/li><li>Run migration again <\/li><\/ul>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py makemigrations\n$ python manage migrate<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/stackoverflow.com\/questions\/43871604\/valueerror-dependency-on-app-with-no-migrations-customuser\">V<\/a>alueError: Dependency on app with no migrations: customuser<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">$ python manage.py makemigrations<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Project Structure<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Running tasks with Makefile<\/h3>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">PREFIX_PKG := app\n\ndefault:\n\tgrep -E ':\\s+#' Makefile\n\nclearcache:\t# Clear Cache\n\tpython3 manage.py clearcache\n\nrun:\t\t# Run Server\n\tpython3 manage.py runserver 8000\n\ndeploy:\t\t# Deploy\n\trm -rf dist $(PREFIX_PKG)*\n\trm -rf polls.dist\n\tcd polls &amp;&amp; python3 setup.py sdist\n\tmkdir polls.dist &amp;&amp; mv polls\/dist\/* polls\/$(PREFIX_PKG)* polls.dist\n\ninstall_bootstrap:\t# Install Bootstrap Library\n\tcd .. &amp;&amp; yarn add bootstrap\n\trm -rf  polls\/static\/bootstrap\n\tmkdir   polls\/static\/bootstrap\n\tcp -R ..\/node_modules\/bootstrap\/dist\/* polls\/static\/bootstrap\n\ninstall_jquery:\t\t# Install jQuery Library\n\tcd .. &amp;&amp; yarn add jquery\n\trm -rf polls\/static\/jquery\n\tmkdir  polls\/static\/jquery\n\tcp ..\/node_modules\/jquery\/dist\/* polls\/static\/jquery\n\ninstall_bootstrap_from_source:\t# Install Bootstrap from Source\n\tmkdir -p install &amp;&amp; \\\n\twget https:\/\/github.com\/twbs\/bootstrap\/releases\/download\/v4.1.3\/bootstrap-4.1.3-dist.zip -O install\/bootstrap-4.1.3-dist.zip &amp;&amp; \\\n\tunzip install\/bootstrap-4.1.3-dist.zip -d polls\/static\/bootstrap\/4.1.3<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Installation Install current Version (3.2.8) Install next Version (4.0) Check installed version First steps The following steps are based on a summary of the Django Tutorial Create project Create view Create view in app_base\/views.py Add view to app_base\/urls.py Add urls to project main\/urls.py Create admin user Create data and database Create database model in app_base\/models.py Activating models in main\/settings.py Make app modifiable in the admin (app_base\/admin.py) Writing more views Create views in app_base\/views.py Add new views into app_base\/urls.py Add template in app_base\/templates\/polls\/index.html Modify view in app_base\/views.py Raising a 404 error in app_base\/views.py Create template app_base\/templates\/polls\/detail.html Removing hardcoded URLs in app_base\/templates\/polls\/index.html The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":5556,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[16,21,65],"tags":[108,114],"class_list":["post-7244","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cookbook","category-django","category-python","tag-django","tag-python"],"jetpack_featured_media_url":"https:\/\/via-internet.de\/blog\/wp-content\/uploads\/2020\/01\/django-toolbox-3.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/7244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/comments?post=7244"}],"version-history":[{"count":3,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/7244\/revisions"}],"predecessor-version":[{"id":8530,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/posts\/7244\/revisions\/8530"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media\/5556"}],"wp:attachment":[{"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/media?parent=7244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/categories?post=7244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/via-internet.de\/blog\/wp-json\/wp\/v2\/tags?post=7244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}