簡體   English   中英

從 django 模型中獲取數據

[英]fetching data from django models

我是 Django 的新手。 我使用 Django 模型創建了一個表,並使用 python Z2591C98B70119FE624898B1E42B4 插入了一個 object。 當我在 Django 模板上使用 object id 訪問 object 時,我得到的結果是“{{obj.id}}-{{obj.content}}”而不是實際數據

views.py 文件

from django.shortcuts import render
from django.http import HttpResponse, Http404
from .models import Tweet


# Create your views here.
def home_view(request, *args, **kwargs):
    return HttpResponse("<h1>Hello World!<h1>")

def tweet_detail_view(request, tweet_id, *args, **kwargs):
    try:
        obj = Tweet.objects.get(id = tweet_id)
    except:
        raise Http404
    return HttpResponse("<h1>Hello {{obj.id}} - {{obj.content}}</h1>")

模型.py 文件

from django.db import models

# Create your models here.
class Tweet(models.Model):
    content = models.TextField(blank=True, null=True)
    image = models.FileField(upload_to='images/', blank=True, null=True)

urls.py 文件

from django.contrib import admin
from django.urls import path
from tweets import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home_view),
    path('tweet/<int:tweet_id>', views.tweet_detail_view),
]

Shell

(base) ankita@ankita-HP-Laptop-15-bs0xx:~/dev/trydjango/tweetme$ ./manage.py shell
Python 3.7.4 (default, Aug 13 2019, 20:35:49) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.8.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: from tweets.models import Tweet                                        

In [2]: obj = Tweet.objects.get(id = 1)                                        

In [3]: obj                                                                    
Out[3]: <Tweet: Tweet object (1)>

In [4]: obj.content                                                            
Out[4]: 'Hello World!'

In [5]: obj.id                                                                 
Out[5]: 1

本地主機頁面只有下一個文本:

你好 {{obj.id}} - {{obj.content}}

如果你創建模板來渲染你的頁面,這個任務很容易實現。 那么,為什么不創建模板並使用渲染來渲染它呢?

hello_word.html

<html>
    <body>    
        <h1>Hello {{obj.id}} - {{obj.content}}</h1>
    </html>
</body>

視圖.py

而不是 HttpResponse:

return render(request, 'hello_world.html', {'obj': obj})

我會說這是呈現模板的常規 Django 方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM