2016-10-08 104 views
2

我想發送數據從我的HTML提交到我的數據庫(MySQL)。 在服務器端我使用django(im begginer)。 你可以給我舉例,如果我在我的表「名稱」「電子郵件」「消息」中使用3行。 當有人按提交我想要數據存儲在數據庫和其他用戶不能看到他們。我讀過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'), 

] 

的mysite/urls.py

​​

當我提交表單,我得到的值在我的網址,但他們的arent在DB通過。

views.py

從django.shortcuts進口呈現 從.models導入bosti

創建您的意見在這裏。

高清指數(請求): 返回渲染(請求, '博客/ 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() 

我有模型bosti。當我在db登錄時,我看到新表bosti_bosti。

settings.py

安裝的程序: 我用mysql

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


     } 
    } 
+0

您是否配置了網址嗎?您必須爲將爲'/ myapp /'的url定義視圖。 –

+0

您不必爲您的要求同時使用django表單和傳統的html表單。任何一個就足夠了 –

回答

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設置,即時通訊

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'), 

] 

mysite的/網址。py

​​

當我提交表單時,我在我的url中獲取值,但他們沒有通過數據庫。

views.py

從django.shortcuts進口呈現來自.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中,但似乎他們沒有通過分貝 我創建的模型,但不知道我必須做的網址(如果我必須,不知道什麼即時消失) – Leap

+0

編輯並添加您的整個代碼,然後我可以得到一個更好的想法,否則我只是假設你想要做什麼。上面的代碼將表單數據發送到數據庫,它使用* args而不是參數。添加您的models.py,view.py和urls.py –

+0

您可以發佈您的view.py很好plz –