Changes

Jump to navigation Jump to search
779 bytes added ,  07:53, 27 March 2019
m
Line 1: Line 1: −
= Django =
+
=Django=
==== Requirements: ====
+
====Requirements:====
* Python
  −
* Database (MySQL / PostgreSQL...)
     −
==== Installation: ====  
+
*Python
 +
*Database (MySQL / PostgreSQL...)
 +
 
 +
====Installation:====  
 
  <nowiki>pip install django</nowiki>
 
  <nowiki>pip install django</nowiki>
   −
==== Create project ====
+
====Create project====
 
  <nowiki>django-admin.py startproject mysite</nowiki>
 
  <nowiki>django-admin.py startproject mysite</nowiki>
   −
==== Database Setup ====
+
====Database Setup====
 
Edit: mysite/settings.py
 
Edit: mysite/settings.py
    
In DATABASES = {...
 
In DATABASES = {...
* ENGINE – Either 'django.db.backends.sqlite3', 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', or 'django.db.backends.oracle'.
+
 
 +
*ENGINE – Either 'django.db.backends.sqlite3', 'django.db.backends.postgresql_psycopg2', 'django.db.backends.mysql', or 'django.db.backends.oracle'.
 
*NAME – The name of your database.
 
*NAME – The name of your database.
 
*USER – Username for the database.
 
*USER – Username for the database.
Line 25: Line 27:  
(pip install MySQL-python)
 
(pip install MySQL-python)
   −
==== Run App in development server ====
+
====Run App in development server====
 
If the server is an amazon aws:
 
If the server is an amazon aws:
 
  <nowiki>python manage.py runserver 0.0.0.0:8000 </nowiki>
 
  <nowiki>python manage.py runserver 0.0.0.0:8000 </nowiki>
Line 37: Line 39:  
then kill process
 
then kill process
   −
==== Create an app ====
+
====Create an app====
 
  <nowiki>python manage.py startapp appname</nowiki>
 
  <nowiki>python manage.py startapp appname</nowiki>
   −
==== Create admin user ====
+
====Create admin user====
 
python manage.py createsuperuser
 
python manage.py createsuperuser
 
access at http://serverurl:8000/admin
 
access at http://serverurl:8000/admin
   −
==== Usefull packages ====
+
====Usefull packages====
===== Django Allouth =====
+
=====Django Allouth=====
 
[http://django-allauth.readthedocs.org/en/latest/showcase.html User Registration]<br />
 
[http://django-allauth.readthedocs.org/en/latest/showcase.html User Registration]<br />
 
[http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/ Allouth Tutorial]
 
[http://www.sarahhagstrom.com/2013/09/the-missing-django-allauth-tutorial/ Allouth Tutorial]
===== Django registration =====
+
=====Django registration=====
 
Not working in Django 1.7<br>
 
Not working in Django 1.7<br>
 
[http://django-registration.readthedocs.org/en/latest/quickstart.html User registration]<br>
 
[http://django-registration.readthedocs.org/en/latest/quickstart.html User registration]<br>
 
[https://devdoodles.wordpress.com/2009/02/16/user-authentication-with-django-registration/ Django registration step by step]
 
[https://devdoodles.wordpress.com/2009/02/16/user-authentication-with-django-registration/ Django registration step by step]
 +
=CBV=
 +
==CSRF Exempt==
 +
<source lang="python">class ChromeLoginView(View):
 +
    @method_decorator(csrf_exempt)
 +
    def dispatch(self, request, *args, **kwargs):
 +
        return super(ChromeLoginView, self).dispatch(request, *args, **kwargs)
 +
 +
    def get(self, request):
 +
        return JsonResponse({'status': request.user.is_authenticated()})
   −
= Notes =
+
    def post(self, request):
== Templates ==
+
        username = request.POST['username']
 +
        password = request.POST['password']
 +
        user = authenticate(username=username, password=password)
 +
        if user is not None:
 +
            if user.is_active:
 +
                login(request, user)
 +
                return JsonResponse({'status': True})
 +
        return JsonResponse({'status': False})</source>
 +
=Notes=
 +
==Templates==
 
  href="{% static 'cpc/css/tree.css' %}"
 
  href="{% static 'cpc/css/tree.css' %}"
 
  href="{% url 'civilarea_history_create' task.id %}"
 
  href="{% url 'civilarea_history_create' task.id %}"
=== Change language template ===
+
===Change language template===
<nowiki><form action="{% url 'set_language' %}" method="post">
+
<source lang="html+django"><form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
+
    {% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
+
    <input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
+
    <select name="language">
{% get_language_info_list for LANGUAGES as languages %}
+
        {% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
+
        {% for language in languages %}
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
+
            <option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
    {{ language.name_local }} ({{ language.code }})
+
                {{ language.name_local }} ({{ language.code }})
</option>
+
            </option>
{% endfor %}
+
        {% endfor %}
</select>
+
    </select>
<input type="submit" value="Go" />
+
    <input type="submit" value="Go" />
</form></nowiki>
+
</form></source>
   −
== Reset Migrations ==
+
==Reset Migrations==
    
1) Fake migrations back to 0
 
1) Fake migrations back to 0
Line 86: Line 106:  
  ./manage.py migrate app --fake
 
  ./manage.py migrate app --fake
   −
== Check for connected signals listeners ==
+
==Check for connected signals listeners==
 
   from django.db.models.signals import *
 
   from django.db.models.signals import *
 
   for signal in [pre_save, pre_init, pre_delete, post_save, post_delete, post_init]:
 
   for signal in [pre_save, pre_init, pre_delete, post_save, post_delete, post_init]:
 
       # print a List of connected listeners
 
       # print a List of connected listeners
 
       print(signal.receivers)
 
       print(signal.receivers)
== Use Django ORM from python script ==
+
==Use Django ORM from python script==
  <nowiki>import os
+
  import os
import django
+
import django
os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings'
+
os.environ["DJANGO_SETTINGS_MODULE"] = 'project.settings'
django.setup()
+
django.setup()
from .models import</nowiki>
+
from .models import
 
or
 
or
 
  python manage.py shell < script.py
 
  python manage.py shell < script.py

Navigation menu