web-dev-qa-db-ja.com

views.pyファイルからDjango=データベースにデータを挿入するには?

Views、pyファイルの関数からDjangoデータベースにデータを挿入するにはどうすればよいですか?挿入する唯一の方法はpython manage.py Shellですか?

私が使用している詳細な説明:

  • python 3.4
  • Django 1.8.2
  • PyMySQL

例えば:

models.py:

from Django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    city = models.CharField(max_length=60)

views.py:

from Django.http import HttpResponse
import pymysql
from books.models import Publisher

def send(request):
    p = Publisher(name='Apress', city='Berkeley')
    p.save()

urls.py

niloofar.viewsからimport send

url(r '^ index /'、send)、

ページインデックスが読み込まれると、送信機能が動作し、データベースにデータが挿入されます。

それは動作しません。エラーは発生せず、インデックスページを更新しても何も起こりませんでした。データベースには何も送信されませんでした。データを挿入しようとしている方法に、構文に間違いがあると思います。

python manage.py Shellを実行しても、次のことがわかります。

books.models import Publisherから

p = Publisher(name = 'Apress'、city = 'Berkeley')

p.save()

Djangoデータベースに何も挿入されません。

10
niloofar

あなたの質問は非常に不明確です。おそらく Django-tutorial を実行する必要があります。

ただし、ビューからデータベースにデータを挿入できることを確認してください。 Fooというモデルがあるとします:

models.py

class Foo(models.Model):
    name = models.CharField(max_length=100)

view.py

from .models import Foo

def some_name(request):
    foo_instance = Foo.objects.create(name='test')
    return render(request, 'some_name.html.html')
19
ilse2005

モデルの1つのインスタンスを作成して保存するだけです。 Articleモデルがあるとします:

from Django.http import HttpResponse
from Django.template import loader

from .models import Article


def index(request):
    article = Article()
    article.title = 'This is the title'
    article.contents = 'This is the content'
    article.save()

    template = loader.get_template('articles/index.html')
    context = {
        'new_article_id': article.pk,
    }
    return HttpResponse(template.render(context, request))
11
Kristof Claes

あなたはこれを試すことができます:

def myFunction(request):
    myObj = MyObjectType()
    myObj.customParameter = parameterX
    ...
    myObj.save()
3
Peter Grundner