Teil 1 https://qiita.com/TuruMaru/items/4df41577fb9f722c7864
Ich werde eine Datenbank erstellen, aber dazu muss ich zuerst den Inhalt in die Tabelle in models.py
schreiben.
posts/models.py
from django.db import models
#Importieren, um die Zeitzone zu verwenden
from django.utils import timezone
# Create your models here.
#models.Es ist eine Regel, ein Modell zu schreiben
class Posts(models.Model):
#Meta und Objekt sind keine Magie
class Meta(object):
#Geben Sie den Namen der zu erstellenden Tabelle an
db_table = 'posts'
#Spaltenname=Datei Format(Der auf dem Verwaltungsbildschirm angezeigte Name,Andere Einschränkungen)
text = models.CharField(verbose_name='Text', max_length=255)
created_at = models.DateField(verbose_name='Erstellungsdatum', default=timezone.now)
#Stellen Sie ein, dass es auf dem Verwaltungsbildschirm angezeigt werden soll(Magie)
def __str__(self):
return self.text, self.created_at
Jetzt können Sie eine Tabelle mit dem Namen posts erstellen. Basierend auf diesen werden wir im Terminal operieren.
$ python manage.py makemigrations posts
Migrations for 'posts':
posts/migrations/0001_initial.py
- Create model Posts
Sie haben jetzt die Datei 0001_initial.py
erstellt.
Diese Datei enthält den Inhalt der zu erstellenden Datenbank.
Dieser Befehl hat jedoch noch keine Datenbank erstellt. Ich bin bereit.
$ python manage.py sqlmigrate posts 0001
BEGIN;
--
-- Create model Posts
--
CREATE TABLE "posts" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "text" varchar(255) NOT NULL, "created_at" date NOT NULL);
COMMIT;
Sie können den SQL-Code sehen, wenn die Tabelle mit diesem Befehl erstellt wird.
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, posts, sessions
Running migrations:
Applying posts.0001_initial... OK
Ja, das ist erledigt. Vielen Dank.
Ein kleiner Vorgang ist erforderlich, um den Verwaltungsbildschirm zu überprüfen, aber ich werde ihn hier weglassen.
Wenn Sie den Pfad nicht übergeben, wird der von Ihnen geschriebene Code nicht im Browser angezeigt. Es gibt auch andere Einstellungen, also machen wir es zuerst.
mysite/setting.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#Zusätzlicher Teil von hier
'posts',
'templates',
]
Fügen Sie die Anwendung nach dem Erstellen zu "INSTALLED_APPS" hinzu.
settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
#↓ Fügen Sie hier eine Zeile hinzu
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
Teilen Sie Python mit, dass Sie das Vorlagenverzeichnis erstellt haben.
Außerdem werde ich ein wenig views.py und html schreiben, um den Vorgang zu überprüfen.
posts/views.py
from django.shortcuts import render
# Create your views here.
from django.views.generic import View
class IndexView(View):
def get(self,request, *args, **kwargs):
return render(request, 'posts/post.html')
index = IndexView.as_view()
templates/base.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>{% block page_title %}{% endblock %}</title>
</head>
<body>
<hr>
<h1>{% block title %}{% endblock %}</h1>
<hr>
{% block content%}{% endblock %}
<hr>
</body>
</html>
templates/posts/post.html
{% extends "base.html" %}
{% block page_title %}post{% endblock %}
{% block title %}post{% endblock %}
{% block content %}
<h1>Posts</h1>
{% endblock %}
Normalerweise wird "base.html" als Basis aller Seiten verwendet, und "post.html" und andere füllen den Inhalt aus.
Als nächstes werde ich endlich urls.py
schreiben.
mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('posts.urls')),
]
posts/urls.py
from django.urls import path
from . import views
app_name = 'posts'
urlpatterns = [
path('', views.index, name='index'),
]
Wenn Sie einen solchen Anruf tätigen, starten Sie einen lokalen Server und überprüfen Sie ihn.
$python manage.py runserver 3000
Geben Sie dann "localhost: 3000" bei Google ein oder so.
Wenn es so herauskommt, ist die Pass-Beziehung vollständig. Schreiben wir den Code der Bulletin-Board-Anwendung ab dem nächsten.