[PYTHON] Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)

Umgebung

Installation

Erstellen Sie virtualenv

mkvirtualenv -p /usr/bin/python2.7 [Projektname]

Django + MongoDB Installation

pip install git+https://github.com/django-nonrel/django-nonrel.git@master
pip install git+https://github.com/django-nonrel/djangotoolbox.git@master 
pip install git+https://github.com/django-nonrel/mongodb-engine.git@master

py.test Installation

pip instal py.test
pip install django_pytest

Projekterstellung

cd [Dev-Verzeichnis]
workon [Projektname]
django-admin.py startproject [Projektname]

Verzeichnisaufbau

cd [Projektstamm]
#Für die Bewerbung
mkdir apps
touch apps/__init__.py
#Testdaten etc.
mkdir fixtures
#Internationalisierte po/mo Dateispeicherung
mkdir -p local/ja/LC_MESSAGES
mkdir -p local/en/LC_MESSAGES

# Put project-specific requirements here.
# See http://pip-installer.org/requirement-format.html for more information.
mkdir requirements

# This directory is used to store static assets for 
# your project. User media files (FileFields/ImageFields) are not stored here.
mkdir static
mkdir static/img
mkdir static/js
mkdir static/css

#Vorlagenspeicher
mkdir templates

#Dokumentenspeicher
mkdir docs

Anwendungserstellung

cd [Projektstamm]/apps
#Zur Modellplatzierung
django-admin.py startapp models

GitHub Registrierung

cd [Projektstamm]
git config --global user.name  "Nutzername"
git config --global user.email  "Mail Adresse"
git init
git add *.py
git add app
git commit -m 'first commit'
git remote add origin [email protected]:USER_ID/REPO_NAME.git
git push -u origin master

MongoDB vorbereiten

Server Einstellungen

Verzeichnisse und Einstellungen erstellen

mkdir -p environment/dev/var/mongodb
mkdir -p environment/dev/etc

#Festlegen der Dateierstellung
cat <<EOF >> environment/dev/etc/mongod.conf
heredoc> # Store data
heredoc> dbpath = [Projektstamm]/environment/dev/var/mongodb
heredoc> 
heredoc> # Only accept local connections
heredoc> bind_ip = 127.0.0.1
heredoc> EOF

#Verhindern Sie, dass die Entwicklungsdatenbank git betritt
cat << EOF >> environment/dev/var/mongodb/README
heredoc>Entwicklung MongoDB Datenspeicherung
heredoc> EOF

cat << EOF >> environment/dev/var/mongodb/.gitignore
heredoc> /*
heredoc> /.*
heredoc> !README
heredoc> !.gitignore
heredoc> EOF

Serverstart

mongod run --config environment/dev/etc/mongod.conf

Serverinitialisierung

mongo
> use [DB-Name]
> db.addUser('[DB-Benutzername]', '[DB-Passwort]')

Ändern Sie die DB-Einstellungen in settings.py

settings.py


DATABASES = {
    'default': {
        'ENGINE': 'django_mongodb_engine', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': '[DB-Name]',                      # Or path to database file if using sqlite3.
        'USER': '[DB-Benutzername]',                      # Not used with sqlite3.
        'PASSWORD': '[DB-Passwort]',                  # Not used with sqlite3.
        'HOST': 'localhost',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': 27017,                      # Set to empty string for default. Not used with sqlite3.
    }
}

** Wenn USER und PASSWORD gesetzt sind, tritt in python manage.py test ein Anmeldefehler bei DB auf. Daher scheint es besser, USER = '' und PASSWORD = '' in der Entwicklungsumgebung festzulegen. ** ** **

syncdb

python manage.py syncdb

Wenn Sie einen SITE_ID-Fehler erhalten

In MongoDB muss die ID ObjectID sein, aber Djangos SITE_ID ist standardmäßig 1, sodass der folgende Fehler auftritt.

bson.errors.InvalidId: AutoField (default primary key) values must be strings representing an ObjectId on MongoDB (got u'1' instead). Please make sure your SITE_ID contains a valid ObjectId string.

http://django-mongodb.org/troubleshooting.html#site-id-issues Dann sollten Sie die ID erhalten, die in SITE_ID mit "python manage.py telleriteid" festgelegt werden soll, aber zu diesem Zeitpunkt ist in django_site kein Datensatz vorhanden, sodass ich ihn nicht erhalten kann.

Daher können Sie die Site wie folgt manuell erstellen.

python manage.py shell

>>> from django.contrib.sites.models import Site
>>> s = Site()
>>> s.save()
>>> quit()

python manage.py tellsiteid

Stellen Sie die SITE_ID, die Sie damit erhalten haben, in settings.py ein.

settings.py


SITE_ID = u'XXXXXXXXXXXXXXXXX'

Ich dachte, aber am Ende konnte ich nicht verhindern, dass dieser Fehler während des Tests auftritt.

Die Ursache ist django / contrib / sites / management.py. Hier wird beim Erstellen der Site pk = 1 zwangsweise eingefügt.

django/contrib/sites/management.py


def create_default_site(app, created_models, verbosity, db, **kwargs):
    # Only create the default sites in databases where Django created the table
    if Site in created_models and router.allow_syncdb(db, Site) :
        if verbosity >= 2:
            print "Creating example.com Site object"
        # The default settings set SITE_ID = 1, and some tests in Django's test
        # suite rely on this value. However, if database sequences are reused
        # (e.g. in the test suite after flush/syncdb), it isn't guaranteed that
        # the next id will be 1, so we coerce it. See #15573 and #16353. This
        # can also crop up outside of tests - see #15346.
        s = Site(pk=1, domain="example.com", name="example.com")
        s.save(using=db)
    Site.objects.clear_cache()

signals.post_syncdb.connect(create_default_site, sender=site_app)

Ich habe die Verwendung von django.contrib.auth und django.contrib.sites in INSTALL_APPS eingestellt, da dies problematisch ist.

settings.py


INSTALLED_APPS = (
    #'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    #'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

Recommended Posts

Wartung der Django + MongoDB-Entwicklungsumgebung (mitten im Schreiben)
django kann nicht in der Entwicklungsumgebung von pipenv + pyenv installiert werden
In der Mitte der Entwicklung werden wir Alembic vorstellen
Verwenden von TensorFlow in Cloud 9 Integrierte Entwicklungsumgebung - Grundlagen der Verwendung
Instanziierung der zuvor erstellten BOX-Entwicklungsumgebung
Die Geschichte der Anzeige von Mediendateien in Django
Entwicklungsumgebung in Python
[Memo] Django-Entwicklungsumgebung
Wird ab der Einführung von Node.js in der WSL-Umgebung verwendet
Betreiben Sie mongoDB von Python in einer Ubuntu-Umgebung. ① Einführung von mongoDB
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
Ändern Sie den Einstellungswert von settings.py entsprechend der Entwicklungsumgebung
Ich habe an der Übersetzungsaktivität des offiziellen Django-Dokuments teilgenommen
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Überprüfen Sie die Funktionsweise von Python für .NET in jeder Umgebung
Django Entwicklungsumgebung Bau Memo
Befehle, die häufig in der Entwicklungsumgebung während der Python-Implementierung verwendet werden
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Das Bild wird in der lokalen Entwicklungsumgebung angezeigt, aber das Bild wird nicht auf dem Remote-Server von VPS angezeigt.
Entwicklung der Django-Umgebung unter Windows 10
(Hinweis) Django in Vagrant-Umgebung
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Django Projekt Entwicklungsumgebung Bau
Machen Sie den SIP-Server so kurz wie möglich (in der Mitte der Erklärung).
Unterdrücken Sie Seitenumbrüche in der Mitte einer Tabelle mit Sphinx Single HTML
[In der Abbildung verstanden] Verwaltung der virtuellen Python-Umgebung durch Pipenv
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
So richten Sie die Entwicklungsumgebung von ev3dev ein [Windows-Version]
Die Geschichte der Teilnahme an AtCoder
[Django] Memorandum of Environment Construction Procedure
Implementierung der Login-Funktion in Django
[Für Anfänger] Django -Entwicklungsumgebung Bau-
Wechseln Sie die in Django 1.9 angezeigte Sprache
Die Geschichte des "Lochs" in der Akte
Überprüfen der NAOqi Python-Entwicklungsumgebung
Die Geschichte des Exportierens eines Programms
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Holen Sie sich die Abfragezeichenfolge (Abfragezeichenfolge) mit Django
Entwicklung der MTG Card Evaluation Posting Site ~ Veröffentlichung der Django App in 5 Wochen ~
Richtlinien für die Reinkarnation in der Welt der Linux-Programmierentwicklung (C / C ++ - Sprache)
pyenv + pyenv-Laden Sie die virtualenv-Umgebung automatisch in die virtualenv-Umgebung
Betrachten Sie die Beschreibung von Dockerfile (Django + MySQL②)
Installieren Sie Django in einer virtuellen Pipenv-Umgebung
Holen Sie sich die IP-Adresse des Kunden mit Django
Ich habe den asynchronen Server von Django 3.0 ausprobiert
Hinzufügen einer lokalen Entwicklungsumgebung unter MacOS
Überprüfen Sie das Verhalten des Zerstörers in Python
Die Geschichte eines Fehlers in PyOCR
Verstehen Sie den Komfort des Django Rest Framework
Django ~ Lass es uns im Browser anzeigen ~
So überprüfen Sie die Version von Django
Algorithmus Gymnastik 24 Mitte der verknüpften Liste
CSS-Umgebung in 10 Minuten mit Django erstellt
Implementieren Sie einen Teil des Prozesses in C ++
Informationen zur virtuellen Umgebung von Python Version 3.7
Erstellen Sie eine Ausführungsumgebung für Jupyter Lab
Das Ergebnis der Installation von Python auf Anaconda