我正在尝试创建一个Django Web应用程序,该应用程序接受表单/文本框中的文本,对其进行处理,然后重定向到显示已处理文本的网页。我编写了一个半功能的应用程序,发现调试非常具有挑战性,因为我不了解自己所做的大部分事情。我希望您能帮助我理解一些概念,链接到资源也很感激。
考虑以下简单模型:
class ThanksModel(models.Model):
thanks_text = models.CharField(max_length=200)
是通过manage.py shell设置thank_text文本的唯一方法吗?如果我只有一个要显示的文本,这感觉很痛苦。如果我要显示仅显示“ hi”的网页,是否还需要创建模型?
考虑以下视图和模板:
views.py
class TestView(generic.FormView):
template_name = 'vader/test.html'
form_class = TestForm
success_url = '/thanks/'
test.html
<form action = "{% url 'vader:thanks'%}" method="post">
{% csrf_token %}
{{ form }}
<input type = "submit" value = "Submit">
</form>
我需要创建另一个模型,视图和html模板并为“ / thanks /”更新urls.py,以便成功重定向成功的URL? (这就是我所做的。)在这种情况下,我是否需要使用success()或reverse()或reverse_lazy()?
答案 0 :(得分:0)
在处理可能包含大量信息的对象,数据和数据库时使用模型。 例如,一个人就是一个模型。他们的属性是年龄,姓名,国籍等。
models.py
apply plugin: 'com.android.application'
android {
def yo = rootProject
compileSdkVersion yo.compileSdkVersion
defaultConfig {
applicationId "com.package.name"
minSdkVersion yo.minSdkVersion
targetSdkVersion yo.targetSdkVersion
versionCode yo.appVersionCode
versionName yo.appVersion
multiDexEnabled true
}
buildTypes {
debug {
applicationIdSuffix ".dev"
splits.abi.enable = false
splits.density.enable = false
aaptOptions.cruncherEnabled = false
}
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation project(':module1')
implementation project(':base')
implementation 'com.android.support:multidex:1.0.3'
}
apply plugin: 'com.google.gms.google-services'
Thi处理一个对象的多位信息。 (对象是人)
谢谢消息不需要吗?因此,请删除模型以获取谢谢消息。只有视图,您可以在其中使用模板创建视图并将视图设置为url。
views.py
class Person(models.Model):
Name = models.CharField(max_length=50)
age = models.IntegerField()
nationality = models.CharField(max_length=50)
test.html
class TestView(generic.FormView):
template_name = 'vader/test.html' # self explantory
form_class = TestForm # grabs the test form object
success_url = reverse_lazy('vader:thanks') # this makes sure you can use the name of the url instead of the path
def ThanksView(request): # its simple so you don't even need a class base view. a function view will do just fine.
return render(request,"thanks.html")
thanks.html
<form action = "{% url 'vader:thanks'%}" method="post">
{% csrf_token %}
{{ form }}
<input type = "submit" value = "Submit">
</form>
url.py
<h1>Thank you for Submitting</h1>
<h2> Come Again </h2>
我还没有测试过,但是希望它能帮助并指导您正确的方向