2015-10-09 83 views
1

我正在嘗試在學習django時寫入一個小應用程序。但是,當我嘗試在數據庫中保存表單數據時,發生了一些問題。我使用python3。 4和Django的1.8.4,我的數據庫爲MySQLDjango無法在數據庫中保存表單數據

我遇到的第一個問題是,數據庫中沒有任何數據

這是我的模型代碼:

SUBJECT_CHOICES = (
('computerscience', '計算機科學導論'), 
('C-sharp', 'C#'), 
('cplusplus', 'C++'), 
('CCNA', 'CCNA'), 
('ACM', 'ACM'), 
('linux', 'linux'), 
('java', 'java'), 
('python', 'python') 
) 

class Homework(models.Model): 
    handin_date = models.DateTimeField('交作業時間') 
    subject = models.CharField(verbose_name = '課程', default = '計算機科學導論', max_length = 20, choices = SUBJECT_CHOICES) 
    code = models.TextField(verbose_name = '代碼', default = '') 
    xuehao = models.CharField(verbose_name = '學號', default = '', max_length = 9) 
    name = models.CharField(verbose_name = '姓名', default = '', max_length = 10) 

這是我的查看代碼:

def cshomework(request): 
    if request.method == 'POST': 
     form = HomeworkForm(request.POST) 
     if form.is_valid(): 
      return render(request, 'blog/success.html', { 'title': '交作業成功' }) 
    else: 
     form = HomeworkForm(initial = { 'xuehao': '學號', 'name': '姓名', 'subject': '計算機科學導論', 'handin_date': dt.now(), 'code': '你的代碼' }) 

    return render(request, 'blog/cshomework.html', { 'title': '交作業', 'form': form }) 

這樣沒有什麼在我的數據庫

的Seconde系列問題是,當我嘗試另一種方式,我在DATEBASE

同型號代碼

這裏是之前得到一個無值我的看法代碼:

def cshomework(request): 
    if request.method == 'POST': 
     form = HomeworkForm(request.POST) 
     if form.is_valid(): 
      return render(request, 'blog/success.html', { 'title': '交作業成功' }) 
    else: 
     homework = Homework.objects.create(xuehao = '學號', name = '姓名', subject = '計算機科學導論', handin_date = dt.now(), code = '你的代碼') 
     form = HomeworkForm(instance = homework)   

    return render(request, 'blog/cshomework.html', { 'title': '交作業', 'form': form }) 

the '課程' means 'subject'

我該如何處理這些問題? 我'真正appriciate你的幫助!

回答

4

畢竟檢查form.is_valid()是否需要保存表單。

def cshomework(request): 
    if request.method == 'POST': 
     form = HomeworkForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return render(request, 'blog/success.html', { 'title': '交作業成功' }) 
     else: 
      form = HomeworkForm(initial = { 'xuehao': '學號', 'name': '姓名', 'subject': '計算機科學導論', 'handin_date': dt.now(), 'code': '你的代碼' }) 

     return render(request, 'blog/cshomework.html', { 'title': '交作業', 'form': form }) 

第二種方法是每次訪問URL時創建一個新的HomeWork,而不提交任何發佈數據。

+0

非常感謝!它解決了我的問題。但爲什麼seconde方法可以保存一些數據? – LiuQiangsheng

+0

你也添加了form.save()呢? –

+0

每當你獲得url,一個對象被創建,是正確的?你想創建一個新的HomeWork,每次有人訪問該URL,而不提交任何數據? –