2016-10-08 27 views
2

私のhtml submitデータをmy database(mysql)に送信します。 サーバ側では、私はdjango(im begginer)を使います。 テーブル「名前」「電子メール」「メッセージ」で3行を使用すると、私に例を挙げることができますか? 誰かが投稿を押すと、私はデータがDBに保存され、他のユーザーはそれらを見ることができません。私はdjangogirlsとdjangoチュートリアル1.10を読んで、私はすでにwebappを作った。しかし、私は私自身で何かしたいと思ったら固執します。投稿フォームhtml django

index.htmlの中に私のフォーム

<form method="POST" class="post-form" action="/myapp/">{% csrf_token %}{{form}} 
     <input class="form-control" id="name" name="name" placeholder="Name" type="text" required> 
    </div> 
    <div class="col-sm-6 form-group"> 
     <input class="form-control" id="email" name="email" placeholder="mail" type="email" required> 
    </div> 
    </div> 
    <textarea class="form-control" id="message" name="message" placeholder="Comm" rows="5"></textarea><br> 
    <div class="row"> 
    <div class="col-sm-12 form-group"> 
{{ form.as_p }} 
     <button class="btn btn-default pull-right" type="submit">Send</button> 

    </form> 

models.py

から将来輸入unicode_literals django.db輸入モデルから

# Create your models here. 
class bosti(models.Model): 

    name = models.CharField(max_length = 50) 
    email = models.CharField(max_length = 50) 
    message = models.CharField(max_length = 50) 

forms.py

from django import forms 

from .models import bosti 

class bosti(forms.ModelForm): 

    class Meta: 
     model = Post 
     fields = ('id', 'name', 'email',' message') 

私は、フォームを送信するとmyappに/ urls.py

from django.conf.urls import url 
    from . import views 
    urlpatterns = [ 
     url(r'^$', views.index, name='hello.html'), 

] 

個人用サイト/ urls.py

​​

は、私は私のurlの値を取得しますが、彼らはDBに渡されアレント。 django.shortcutsから

views.py

は.modelsから がbosti

ここにあなたのビューを作成し、インポートレンダリングインポートします。

DEF指数(要求): リターンレンダリング(リクエスト、 'ブログ/ hello.html'、{})

def bosti(request, 
    template = 'blog/hello.html', *args, **kwargs): 
    if request.user.is_authenticated(): 
     name= request.GET.get('name') 
     email= request.GET.get('email') 
     message= request.GET.get('message') 
     Model = bosti(name = name, email = email, message = message) 

     Model.save() 

Iは、モデルbostiを有します。私がdbでログインすると、新しいテーブルbosti_bostiが表示されます。

settings.py

インストールアプリ: 私は、MySQL

DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME':'myDb', 
      'USER': 'myuser', 
      'PASSWORD': 'mypassword' 


     } 
    } 
+0

はあなたのURLを構成していますか? '/ myapp /'になるURLのビューを定義する必要があります。 –

+0

要件のためにdjango形式と従来のhtml形式の両方を使用する必要はありません。いずれか1つで十分でしょう –

答えて

0
<form method="POST" class="post-form" action="/myapp/"> 
     <input class="form-control" id="name" name="name" placeholder="Name" type="text" required> 
    </div> 
    <div class="col-sm-6 form-group"> 
     <input class="form-control" id="email" name="email" placeholder="mail" type="email" required> 
    </div> 
    </div> 
    <textarea class="form-control" id="message" name="message" placeholder="Comm" rows="5"></textarea><br> 
    <div class="row"> 
    <div class="col-sm-12 form-group"> 
     <button class="btn btn-default pull-right" type="submit">Send</button> 

    </form> 

models.pyを用いmyappの

DBの設定、IMを添加

from future import unicode_literals 

from django.db import models 
# Create your models here. 
class bosti(models.Model): 

    name = models.CharField(max_length = 50) 
    email = models.CharField(max_length = 50) 
    message = models.CharField(max_length = 50) 

forms.py

from django import forms 

from .models import bosti 

class bosti(forms.ModelForm): 

    class Meta: 
     model = Post 
     fields = ('id', 'name', 'email',' message') 

myappに/ urls.py

from django.conf.urls import url 
    from . import views 
    urlpatterns = [ 
     url(r'^$', views.index, name='hello.html'), 

] 

個人用サイト/ URLを。私は、フォームを送信するとPY

​​

は、私は私のurlの値を取得しますが、彼らはDBに渡されアレント。 django.shortcutsから

views.py

.modelsからレンダリングインポートbosti

ここにあなたのビューを作成しインポートします。

def index(request): return render(request, 'blog/hello.html', {}) 

def bosti(request, 
    template = 'blog/hello.html', *args, **kwargs): 
    if request.user.is_authenticated(): 
     name= request.GET.get('name') 
     email= request.GET.get('email') 
     message= request.GET.get('message') 
     Model = bosti(name = name, email = email, message = message) 

     Model.save() 

は、データベースの設定には、このオプションを追加します。

DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME':'myDb', 
      'USER': 'myuser', 
      'PASSWORD': 'mypassword' 
      'OPTIONS': { 
       'sql_mode': 'traditional', 
      } 


     } 
    } 
+0

こんにちは、 ありがとうございます。 私は試してみましたが、まだmysqlでデータを取得できません。 URLに変数がありますが、dbで渡されていないようです モデルを作成しましたが、URLに何があるのか​​わかりません(もし私が何か不足しているとわからない場合) – Leap

+0

あなたのコード全体を編集して追加します良いアイデアを得ることができます、それ以外の場合、私はあなたがしようとしていることについて前提をしています。上記のコードはフォームデータをデータベースに送り、パラメータの代わりに* argsを使います。あなたのmodels.py、view.py、urls.pyを追加してください。 –

+0

あなたのview.pyがうまく投稿できます –