Yes, kind of. There are two kinds of redirects, temporary and permanent 
redirects. By default Django's redirect() method returns a temporary 
redirect. If you pass permanent=True, it returns a permanent redirect.

So here is what happened in your case:

1. You run the MDN tutorial project and point your browser to 
http://127.0.0.1:8000/
2. The browser requests the path / from the server 127.0.0.1:8000 (the 
runserver running the MDN tutorial project) and receives a permanent 
redirect to /catalog/
3. Then you stop the MDN project and run your own project.
4. You then point your browser to http://127.0.0.1:8000
5. Your browser thinks "wait a minute, last time I accessed the path / on 
the server 127.0.0.1:8000, it returned a permanent redirect to /catalog/. 
I'll save my user some time and just go directly to /catalog/".

Now, if a URL returns a temporary redirect, the browser knows that this 
redirect is, well, temporary, so it might point to a different location the 
next time or there might be no redirect at all. Therefore, it must load the 
original URL.

In the example of the tutorial, a permanent redirect should not be used, 
not only because it can lead to the problem you encountered.

Imagine you use this software for your local library at 
http://smalltownlibrary.com/. After a while, you want to add another 
feature, e.g. a book shop under /shop/ where visitor can buy used books. 
You then want to add a homepage at / where users can select whether they 
want to access catalogue or the shop. It works fine for new users, but 
everyone who accessed the site http://smalltownlibrary.com/ before is not 
able to access the new homepage because their browser has cached the 
permanent redirect to the catalog.

Permanent redirects definitely have their place, e.g. if you moved your 
website to a new URL and want to tell the search engines that they should 
only look at the new URL. But you have to be aware that they are indeed 
permanent.

Hope that clarifies it a bit.

Daniel

On Sunday, January 21, 2018 at 7:26:39 PM UTC+1, Doug Nintzel wrote:
>
> That got it Daniel...thanks for the quick help. Was it " permanent=True" 
> in particular that was the problem?
> Thanks again,
> Doug
>
> On Sunday, January 21, 2018 at 10:29:33 AM UTC-7, Daniel Hepper wrote:
>>
>> I realized that the Mozilla tutorial is a wiki, so I took the liberty to 
>> remove the "permant=True" from the redirect.
>>
>> On Sun, Jan 21, 2018 at 6:23 PM, Daniel Hepper <daniel...@gmail.com> 
>> wrote:
>>
>>> It's not the new project referencing the old project, it is actually 
>>> your browser caching the redirect from http://127.0.0.1:8000/ to 
>>> http://127.0.0.1:8000/catalog/.
>>> Because it is a permanent redirect, your browser won't access 
>>> http://127.0.0.1:8000/, it will go http://127.0.0.1:8000/catalog/.
>>>
>>> You can usually get rid of this redirect by clearing your browser cache. 
>>> How exactly that is done depends on the browser you are using.
>>>
>>> This also teaches an important lesson about permanent redirects. Only 
>>> use them when you are absolutely sure that you (and more importantly your 
>>> users) will never again want to access the old URL.
>>>
>>> Hope that helps,
>>> Daniel
>>>
>>>
>>>
>>> On Sun, Jan 21, 2018 at 6:06 PM, Doug Nintzel <doug.n...@gmail.com> 
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> I am new to Django and followed this Mozilla Django Tutorial 
>>>> <https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/development_environment>
>>>>  which 
>>>> was very helpful, and created the 'locallibrary' project.
>>>> As part of the exercise, it has you create a 'catalog' app and has you 
>>>> set up a redirect to the default app 
>>>> <https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/skeleton_website>
>>>>  ('catalog') 
>>>> as below
>>>>
>>>> locallibrary\locallibrary\urls.py
>>>>      path('', RedirectView.as_view(url='/*catalog*/', permanent=True)),
>>>>
>>>>
>>>> The whole tutorial went smoothly, but now I am wanting to create my own 
>>>> project so I created a new virtual environment, created a new 
>>>> site/project, 
>>>> and for sanity check started the server "python manage.py runserver" in 
>>>> the 
>>>> new project and then tried to navigate to the http://127.0.0.1:8000/ 
>>>> ,  but it instead tries to redirect to the tutorial project's app 
>>>> http://127.0.0.1:8000/*catalog*/ and gets a 404.
>>>>
>>>> I tried to install Django in the new virtual environment, but no help. 
>>>> Here are the errors and some other messages:
>>>> Page not found (404)
>>>> Request Method: GET
>>>> Request URL: http://127.0.0.1:8000/catalog/
>>>>
>>>> Using the URLconf defined in CalendarAlerts.urls, Django tried these 
>>>> URL patterns, in this order:
>>>>
>>>>    1. admin/
>>>>
>>>> The current path, catalog/, didn't match any of these.
>>>>
>>>> You have 14 unapplied migration(s). Your project may not work properly 
>>>> until you apply the migrations for app(s): admin, auth, contenttypes, 
>>>> sessions.
>>>> Run 'python manage.py migrate' to apply them.
>>>> January 21, 2018 - 09:28:59
>>>> Django version 2.0.1, using settings 'CalendarAlerts.settings'
>>>> Starting development server at http://127.0.0.1:8000/
>>>> Quit the server with CTRL-BREAK.
>>>> Not Found: /catalog/
>>>> [21/Jan/2018 09:29:13] "GET /catalog/ HTTP/1.1" 404 1971
>>>> Not Found: /favicon.ico
>>>> [21/Jan/2018 09:29:13] "GET /favicon.ico HTTP/1.1" 404 1980
>>>>
>>>> (CalendarAlert_env) 
>>>> C:\Users\dnintzel\Documents\django_projects\CalendarAlerts>*python -m 
>>>> django --version*
>>>> *2.0.1*
>>>>
>>>> (CalendarAlert_env) 
>>>> C:\Users\dnintzel\Documents\django_projects\CalendarAlerts>python --version
>>>> *Python 3.6.4*
>>>>
>>>>
>>>> Can someone help me understand why the new project is referencing the 
>>>> old (and how to resolve)?
>>>> Is it related to the virtual environment? 
>>>>
>>>> I am also interested in BKMs for use of virtual environments in this 
>>>> case? Specifically, should Django need to be installed on each virtual 
>>>> environment (if you don't have it installed globally?). I am actually a 
>>>> little surprised that Django commands executed in the new project before I 
>>>> installed it in that VE.
>>>>
>>>> Thanks in advance,
>>>> Doug
>>>>
>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Django users" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to django-users...@googlegroups.com.
>>>> To post to this group, send email to django...@googlegroups.com.
>>>> Visit this group at https://groups.google.com/group/django-users.
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/django-users/772985a8-537a-4cdb-8030-177262e44efd%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/django-users/772985a8-537a-4cdb-8030-177262e44efd%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/af53930b-a70a-4c0e-8fe7-0a363368935a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to