在 Django 中获取请求?
get request in django?
我对 django 有疑问 request.I 不知道。我试图做所有的事情,但我得到了
'blog' 对象没有属性 'get'。我想在我的网站上做迷你博客,但它现在不工作。我想从数据库中获取所有对象。(抱歉,如果我做错了什么,我是 django 的初学者并尝试为我的网站运行):)
models.py
from django.db import models
# Create your models here.
CHOOSE =[
('Usual','Обычный тариф'),
('Premium','Премиум тариф'),
('Prise','Аукционный')
]
class VDSTARIFS( models.Model):
id = models.CharField(max_length=40, primary_key= True,serialize=True)
name = models.CharField(max_length=20, verbose_name = 'Цены')
choosen = models.CharField(max_length= 20, choices = CHOOSE, verbose_name = 'Тариф', help_text='Выбор тарифного плана.')
title = models.CharField(max_length= 15)
def __str__(self):
return str(self.title)
class blog(models.Model):
id = models.CharField(max_length=40, primary_key= True,serialize=True)
message = models.TextField( verbose_name= 'Сообщение блога')
titleblog = models.CharField(max_length=50, verbose_name = 'Название')
img = models.ImageField(upload_to = 'admin/', verbose_name= 'Картинка' )
def __str__(self):
return str(self.titleblog)
def get_all_objects(self): ##maybe I have troubles with it.
queryset = self.__class__.objects.all()
blog.html
{% csrftoken %}
{% for item in message %}
{% endfor %}
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render
from django.http import HttpResponseRedirect
import os
from polls.models import VDSTARIFS
from polls.models import blog
from django.template.loader import render_to_string
def index_view(request):
#return HttpResponse("<h1>Hello</h1>")
return render(request, "home.html", {})
def about(request):
return render(request, "about.html", {})
def minecraft(request):
return render(request, "minecraft.html",{})
def vds(request):
HTML_STRING = render_to_string("vds.html", context = context1)
return HttpResponse(HTML_STRING)
try:
VDS1 = VDSTARIFS.objects.get(id=0)
name = VDS1.name
except VDSTARIFS.DoesNotExist:
VDS1 = None
context1 = {
'name':name,
'prise':VDS1,
}
def messagesblog(request,self):
HTML_STRING = render_to_string('blog.html')
return HttpResponse(HTML_STRING)
urls.py
from django.contrib import admin
from django.urls import path
from polls import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index_view, name='home'),
path('vds', views.vds, name='vds' ),
path('minecraft', views.minecraft, name='minecraft' ),
path('about', views.about, name='about'),
path('blog', views.blog, name='blog')
]
实际错误可能是url模式错误造成的:
path('blog', views.blog, name='blog')
views.blog 引用博客模型由于:
from polls.models import blog
这里你需要的是视图而不是模型,所以:
path('blog', views.messagesblog, name='blog')
然后,从您的 messagesblog 函数中删除“self”参数。
使用 django.shortcuts 中的“呈现”功能并提供博客对象的上下文:
def messagesblog(request):
return render(request, "blog.html", {message: blog.objects.all()})
这可能会解决您的问题。
不过,有些事情您可以改进。
例如:如果您真的不需要,请不要在您的模型定义中使用“id”字段,因为这通常是一个 auto-generated 数字 (BigInt) 字段。
这只是来自老 Django 老手的一个提示,他很高兴终于被听到了。随着您的继续,您自己会发现更多。
我对 django 有疑问 request.I 不知道。我试图做所有的事情,但我得到了 'blog' 对象没有属性 'get'。我想在我的网站上做迷你博客,但它现在不工作。我想从数据库中获取所有对象。(抱歉,如果我做错了什么,我是 django 的初学者并尝试为我的网站运行):)
models.py
from django.db import models
# Create your models here.
CHOOSE =[
('Usual','Обычный тариф'),
('Premium','Премиум тариф'),
('Prise','Аукционный')
]
class VDSTARIFS( models.Model):
id = models.CharField(max_length=40, primary_key= True,serialize=True)
name = models.CharField(max_length=20, verbose_name = 'Цены')
choosen = models.CharField(max_length= 20, choices = CHOOSE, verbose_name = 'Тариф', help_text='Выбор тарифного плана.')
title = models.CharField(max_length= 15)
def __str__(self):
return str(self.title)
class blog(models.Model):
id = models.CharField(max_length=40, primary_key= True,serialize=True)
message = models.TextField( verbose_name= 'Сообщение блога')
titleblog = models.CharField(max_length=50, verbose_name = 'Название')
img = models.ImageField(upload_to = 'admin/', verbose_name= 'Картинка' )
def __str__(self):
return str(self.titleblog)
def get_all_objects(self): ##maybe I have troubles with it.
queryset = self.__class__.objects.all()
blog.html
{% csrftoken %}
{% for item in message %}
{% endfor %}
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render
from django.http import HttpResponseRedirect
import os
from polls.models import VDSTARIFS
from polls.models import blog
from django.template.loader import render_to_string
def index_view(request):
#return HttpResponse("<h1>Hello</h1>")
return render(request, "home.html", {})
def about(request):
return render(request, "about.html", {})
def minecraft(request):
return render(request, "minecraft.html",{})
def vds(request):
HTML_STRING = render_to_string("vds.html", context = context1)
return HttpResponse(HTML_STRING)
try:
VDS1 = VDSTARIFS.objects.get(id=0)
name = VDS1.name
except VDSTARIFS.DoesNotExist:
VDS1 = None
context1 = {
'name':name,
'prise':VDS1,
}
def messagesblog(request,self):
HTML_STRING = render_to_string('blog.html')
return HttpResponse(HTML_STRING)
urls.py
from django.contrib import admin
from django.urls import path
from polls import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.index_view, name='home'),
path('vds', views.vds, name='vds' ),
path('minecraft', views.minecraft, name='minecraft' ),
path('about', views.about, name='about'),
path('blog', views.blog, name='blog')
]
实际错误可能是url模式错误造成的:
path('blog', views.blog, name='blog')
views.blog 引用博客模型由于:
from polls.models import blog
这里你需要的是视图而不是模型,所以:
path('blog', views.messagesblog, name='blog')
然后,从您的 messagesblog 函数中删除“self”参数。 使用 django.shortcuts 中的“呈现”功能并提供博客对象的上下文:
def messagesblog(request):
return render(request, "blog.html", {message: blog.objects.all()})
这可能会解决您的问题。 不过,有些事情您可以改进。 例如:如果您真的不需要,请不要在您的模型定义中使用“id”字段,因为这通常是一个 auto-generated 数字 (BigInt) 字段。 这只是来自老 Django 老手的一个提示,他很高兴终于被听到了。随着您的继续,您自己会发现更多。