When naming your top-level project (i.e., the directory you're checking your code out into), keep in mind that this will become a Python module, so name it accordingly and don't use spaces or funny characters.
Make sure that your project directory is called differently than:
- any Python builtin (
code
,email
, ...) - any module on your Python path (such as
nose
,celery
,redis
) - any app inside your
apps
directory.
It is a good idea to give your project a concise code name that's somewhat unique to avoid such namespace problems.
Be sure to double check your settings file(s) for anything that might not work with localhost (but will work in production). For example, make sure that if you require SESSION_COOKIE_SECURE
to be set to True in production, set it to False in development (localhost). Or else your sessions will never work properly.
A common problem is that {{ csrf() }}
returns an empty string in your templates.
By default playdoh uses session_csrf
instead of Django's default CSRF framework. One common mistake when going from standard Django CSRF to session_csrf
is that you now need to decorate all your view functions that expect anonymous users to use it (e.g. the login view). For example:
from session_csrf import anonymous_csrf
...
@anonymous_csrf
def login(request):
...
Note that session_csrf
is switched on by default in funfactory
. Therefore, you need to make sure your settings are set up correctly. These are the things you need to have in your settings:
- A working cache backend (e.g.
CACHES
also known asCACHE_BACKEND
) - As part of a working cache backend, make sure memcached (or whatever you are using for caching) is running on your machine
- In
TEMPLATE_CONTEXT_PROCESSORS
make sure it containssession_csrf.context_processor
- In
MIDDLEWARE_CLASSES
make sure it containssession_csrf.CsrfMiddleware
If you're sure you set up loggers and handlers in settings.LOGGING
but you see errors like "no handlers for the.log.name" in your live site, it could mean that your app is not importing monkeypatches
. Your project/app/urls.py
should have this line:
from funfactory.monkeypatches import patch
patch()
This is included with the playdoh skeleton so you'd probably only run into this if you were trying to port an existing app to playdoh or do an upgrade.
If you still don't see logging messages, check that your local settings didn't override settings.LOGGING
. Also make sure that all loggers have at least {'handlers': ['console']}
.
Yes, logging will make you feel a world of pain.