6

我是 mongodb 和 django 的新手。我在 django 中设置了所有的models和。urls.py但是是时候在视图页面上检索数据库的信息了。我的数据库看起来像:

{
"_id": {
    "$oid": "52221778633a610c58c131e6"
},
"text": "just",
"tags": [
    "mongo",
    "django"
],
"comments": [],
"title": "hello" }

数据库名称:事件集合名称:polls_post

urls.py的样子:

from django.conf.urls.defaults import patterns, include, url
from django.views.generic import ListView, DetailView
from polls.models import Post

urlpatterns = patterns('',
     url(r'^time/$','polls.views.current_datetime'),
     url(r'^events/$','polls.views.events'),
)

我的views.py样子:

from django.http import HttpResponse
import datetime

def current_datetime(request):
    now = datetime.datetime.now()
    html = "<html><body>It is now %s.</body></html>" % now
    return HttpResponse(html)

def events(request):
    html = "<html><body>title is:<h1></h1></body></html>" 
    return HttpResponse(html)    

那么,我们将如何从数据库中获取文本、标题和评论,以便将其显示在网页上?

4

3 回答 3

4

为了访问数据库,django 有一个叫做模型的东西。这是一个完整的 ORM,用于抽象底层数据库的具体细节。Django 的 ORM 完全适用于关系数据库。Mongo 是 NoSQL,我们必须寻找其他选择。MongoDB 使用最广泛的 ORM 包括MongokitMongoEngine。这些是构建在 Pymongo 之上的包装器。为简单起见,这里有一个简短的代码片段,用于使用 pymongo 从 mongoDB 获取数据。

from pymongo import Connection

server="localhost"
port = 27017
#Establish a connection with mongo instance.
conn = Connection(server,port)

要从集合中获取单个文档,请使用 find_one。

poll = conn.events.polls_post.find_one({},{"title" : 1}) #first parameter is the query, second one is the projection.
print "Title : ", poll['title']

要从集合中获取所有文档,请使用 find。

polls = conn.events.polls_post.find({},{"title" : 1})#first parameter is the query, second one is the projection.
for poll in polls:
    print "Title : ",poll['title']

如果你想使用 Django 的非关系引擎,你可以写:

from models import Post 
posts = Post.objects.all() 
for post in posts: 
    print post.title

这假设您已经在 models.py 中创建了一个模型类: 像这样:

class Post(models.Model):
    created_on = models.DateTimeField(auto_now_add=True, null=True)
    title = models.CharField()
    text = models.TextField()
    tags = ListField()

如需更多有用的东西,请查看:pymongoMognoDB。要使用 Django 的非关系引擎结帐:Django Non Relational Engine

谢谢!

于 2013-09-01T10:44:15.670 回答
0

这用于显示 mongodb 中我们在 django 应用程序中连接的 ip 的所有数据库的列表 *****这对我有用 *******

从 django.db 导入连接导入 pymongo

        mongo1 = pymongo.Connection('127.0.0.1')

        print mongo1.database_names()
于 2014-06-03T04:19:02.533 回答
0
In Views:

def user_add(request):
    if request.method == "POST":
     # do save process
    else:
      #brand_list = UserModule.objects.all()
      brand_list = UserModule.objects.values('department','designation','division')
      return render_to_response('useradd.html', {'brand_list': brand_list},
                          context_instance=RequestContext(request))

在 HTML 页面中

      <select name="designation" class="form-control"  id="designation">
          <option value="Z">Select a designation</option>
              {% for brand in brand_list %}
                   <option>

               {%for i in brand.designation%}
                   {{ i }}
               {%endfor%}

              </option>
                {% endfor %}
        </select>
于 2014-11-26T06:34:57.047 回答