title: What is the purpose of app_name in urls.py in Django?
body: <p>When <code>include()</code>ing urlconf from the Django app to the project's <code>urls.py</code>, some kind of app's name (or namespace) should be specified as:</p>
  
  <ul>
  <li><code>app_namespace</code> in <code>include((pattern_list, app_namespace), namespace=None)</code> in main <code>urls.py</code></li>
  </ul>
  
  <p>or</p>
  
  <ul>
  <li><code>app_name</code> variable in app's <code>urls.py</code>. </li>
  </ul>
  
  <p>Since, I guess, Django 2, the second method is the preferred one Although I copy-pasted first function signature from Django 3 documentation. But that's not the main point.</p>
  
  <p>My current understanding of <code>namespace</code> parameter of <code>include()</code> is that it's what I use when using <code>reverse()</code>.</p>
  
  <p>What is the purpose of <code>app_name</code> in app's <code>urls.py</code> or <code>app_namespace</code> in main <code>urls.py</code>?<br>
  Are these exactly the same thing?<br>
  How is it used by Django?  </p>
  
  <p>Existing questions (and answers) I've found here explain HOW I should specify it rather than WHY.</p>