我想建立一个连接PostgreSQL数据库并保存信息的表单。代码如下:models.py:
from django.db import models
from django import forms
from django.urls import reverse
from django.forms import ModelForm
class ForQuery(models.Model):
query_id = models.BigAutoField(primary_key=True)//I would like to have my own automatic int field
worker_name = models.CharField(max_length=35, blank=True, null=True)
dep_name = models.ForeignKey(Classification, models.DO_NOTHING, db_column='dep_name', blank=True,
null=True)
forms.py:
class ForQueryForm(forms.ModelForm):
class Meta:
model=ForQuery
fields=('work_name', 'dep_name')//only one field has to be entered while form. the other chosen.
urls.py:
urlpatterns = [
//both paths are extensions from generic page. Which is the main page for the program
path('', views.index, name='index'),
path('worker_ch/', views.worker_ch, name='worker_ch'),
]
views.py:
from django.http import HttpResponseRedirect, HttpResponse
from django.shortcuts import render, get_object_or_404, redirect
from scrap_site.models import ForQuery
from django.urls import reverse
from django.views.generic import TemplateView, ListView
from django.db.models import Q
from .forms import ForQueryForm
def doquery(request):
form=ForQueryForm()
return render(request, 'my_site/worker_ch.html', {'form':form})
worker_ch.html:
{% extends "generic.html" %}
{% load static %}
{% block css %}
<link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}">>
{% endblock %}
{% block content %}
<h2>Enter</h2>
<form method="post" class="for-query-form">
{% csrf_token %}
{{form.as_ch}}
<input type="submit" name="" value="Submit">
</form>
{% endblock %}
这个故障显示出来。
File "C:\my_project\ch\ch_site\urls.py", line 22, in <module>
path('worker_ch/', views.worker_ch, name='worker_ch'),
AttributeError: module 'ch_site.views' has no attribute 'worker_ch'
谢谢大家的帮助! 还在学习Django,想弄明白。在我的程序中,我出现了一个故障,我尝试了不同的方法来解决它,但它依然存在...... 我找不到任何类似的案例来解决它...... 如果可能的话,如果你看到我的错误在哪里,你看到一些可笑的明显的东西,你能不能让我知道我不明白的地方?感觉我没有理解Django的一些重要的东西...... 感觉每次我都在和Django:(,当我在做一些不同的、对我来说很新鲜的事情时... 就像我揉错了猫。向右或向左走一步,Django就开始给我一个又一个的错误。虽然我正在按照教程阅读Django的文章和书籍。
在这里我发现有两个问题。一个是,这里没有名为 work_ch
,应该是 doquery
:
path('worker_ch/', views.doquery, name='worker_ch'),
二、在模板中,你需要将 {{form.as_ch}}
与 {{ form.as_p }}
或者只是 {{ form }}
应该可以。