django如何将数据库与admin相连?

网友投稿 769 2023-12-14

导读:今天首席CTO笔记来给各位分享关于django如何将数据库与admin相连的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! django sqlalchemy怎么用admin后台管理

django如何将数据库与admin相连?

1. Django Admin 不适合最终用户使用Django admin是为管理员设计的, 而不是给最终用户使用的. Django admin的存在是为了方便管理员添加修改删除数据和管理站点任务.2. 列表显示

如上图, 因为model的默认文本显示是 xxx object, 所以在admin列表页中默认显示的也是xxx object. 如果希望显示更有用的信息 我们可以进行如下设置:为model写__unicode__()方法

如果希望model在列表页中显示更多项, 则需要使用list_display__unicode()__例子: # models.py from django.db import modelsclass Article(models.Model):

title = models.CharField(max_length=100) slug = models.CharField(max_length=100) content = models.TextField()

is_published = models.BooleanField(default=False) def __unicode__(self): return self.title

# admin.py from django.contrib import admin from .models import Article admin.site.register(Article)

结果:如果希望显示其他项: # admin.py from django.contrib import admin from .models import Articleclass ArticleAdmin(admin.ModelAdmin):

list_display = (title, is_published)admin.site.register(Article, ArticleAdmin)结果:3. 为ModelAdmin增加动作

我们可以为ModelAdmin增加method或function, 以此使admin界面更符合我们的需求.例如, 我们希望在在admin界面中显示一个明确地URL, 但当我们在model中定义了get_absolute_url()方法后, django admin默认给我们的却是一个与我们想要的URL完全不同的URL. 于是我们可以通过以下方法定义该URL:

# admin.py from django.contrib import admin from django.core.urlresolvers import reverse from django.utils.html import format_html

from .models import Article class ArticleAdmin(admin.ModelAdmin): list_display = (title, is_published,)

readonly_fields = (show_url,) def show_url(self, instance): url = reverse(article_detail, kwargs={pl: instance.pk})

response = format_html("""a href="{0}"文章预览preview/a""", url) return response show_url.short_description = u"文章预览"

# 显示HTML tag # 对于用户提交的数据, 永远不要这么设置! show_url.allow_tags = True注意, allow_tags属性, 其默认值是False, 如果错误使用将会带来安全隐患. 如果设置为True,

在admin中会允许显示HTML tag. 因此我们使用的原则是, 对于用户输入的信息, 永远不设置allow_tags=True. 只有当其内容是系统生成, 用户无法修改的时, 才能使用allow_tags=True.

4. 不在多用户编辑环境使用list_editabledjango admin为我们提供了在列表页修改model属性的功能, 这样方便管理员一次修改多个属性. 如果管理员只有一个人的话, 那就没问题, 但在多用户环境中时, 却是会存在一个很严重的潜在问题. 因为在list页提交的修改信息, 记录的是位置, 而不是model的主键.

举个例子, 文章列表页默认按照创建顺序逆序排列, 用户A打开文章列表页, 并开始修改, 同时用户B增加了一篇新文章, 此时, 当用户A提交修改后其后的文章信息都会出错.

关于django和postgreSQL数据库建立联系很急,很重要~这个估计是因为出了一个No psycopg2.extension Error以后,你手动或者pip install psycopg2 以后的界面,没有错误。

现在是准确的你现在打开你的settings.py 文件,设置数据库就OK啦DATABASES = { default: { ENGINE: django.db.backends.postgresql_psycopg2, # 这边必须是postgresql_psycopg2.

NAME: mytestdb, # 你的已经建好的数据库 USER: myusername, #postgresql数据库账号

PASSWORD: mypassword, #数据库密码 HOST: , # Set to empty string for localhost. Not used with sqlite3.

PORT: , # Set to empty string for default. Not used with sqlite3. }}如果数据库安装在本机,host 和 port都不要配置。

good luck如何查看django与mysql数据库连接创建mysite目录django-admin.py startproject mysite这个命令作用是:这将创建在当前目录创建一个mysite目录

前提是从命令行上cd到你想储存你代码的目录,然后生成各种子目录.首先需要注意的是文件目录这里面的文件大致作用:books这个 文件夹存放的是新建数据库的各种信息books/templates这个目录下装的是网页的布局,当然这个网页的布局就是show.html所提供

books/views.py定义函数,并且把show.html引入进去,文件内容如下:from django.shortcuts import render,render_to_responsefrom django.template import loader

from books import models# Create your views here.def show(request):# publisher_list = [{name:"gongye",city:beijing}]

publisher_list = models.Publisher.objects.all()return render_to_response(show.html,{publisher_list:publisher_list})

12345678910111213books/models.py文件存放的是你所创建的数据库,代码如下:#coding=utf-8from __future__ import unicode_literals

from django.db import models# Create your models here.class Publisher(models.Model):name = models.CharField(max_length = 30)

address = models.CharField(max_length = 50)city = models.CharField(max_length = 60)state_province = models.CharField(max_length = 30)

country = models.CharField(max_length = 50)website = models.URLField()# __unicode__这个函数用来返回某个值可以很好的用于查询和admin界面的显示

def __unicode__(self):return self.nameclass Author(models.Model):first_name = models.CharField(max_length = 30)

last_name = models.CharField(max_length = 40)email = models.EmailField(blank = True,verbose_name = e-mail)

def __unicode__(self):return u%s %s%(self.first_name,self.last_name)class Book(models.Model):title = models.CharField(max_length = 100)

author = models.ManyToManyField(Author)publisher = models.ForeignKey(Publisher)publication_date = models.DateField(blank = True,null = True)

def __unicode__(self):return self.title123456789101112131415161718192021222324252627282930313233books下其他的文件就是在创建的过程中自己产生的.

website/templates文件里存放的是各种显示的静态网页布局,这么多html文件,只要你在访问测试的时候,端口号后面加上html的文件名字就行.比如,我要访问templates/base.html文件,输入网址:localhost:8000/base就可以.

website/settings.py文件是Django的设置文档,里面的INSTALLED_APPS添加多个应用,比如这里面我九添加了books应用,代码如下:INSTALLED_APPS = [django.contrib.admin,

django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,

books,如何正确使用 Django Admin Django forms使用容易, 又方便扩展, 因此Django admin和CBVs基本都基于forms使用. 事实上, 由于django forms的强大验证功能, 大多数Django API 框架都是用forms作为其验证的一部分.

虽然django forms的学习需要花费一点时间, 但如果将forms, models和views结合起来使用, 我们可以花费很少的经历来完成庞大的工作.1. Django Forms的强大之处有些django项目并不直接呈现HTML, 二是以API框架的形式存在, 但你可能没有想到, 在这些API形式的django项目中也用到了django forms. django forms不仅仅是用来呈现HTML的, 他们最强的地方应该是他们的验证能力. 下面我们就介绍几种和Django forms结合使用的模式:

2. 模式一: ModelForm和默认验证最简单的使用模式便是ModelForm和model中定义的默认验证方式的组合:# myapp/views.pyfrom django.views.generic import CreateView, UpdateView

from braces.views import LoginRequiredMixinfrom .models import Articleclass ArticleCreateView(LoginRequiredMixin, CreateView):

model = Articlefields = (title, slug, review_num)class ArticleUpdateView(LoginRequiredMixin, UpdateView):

model = Articlefields = (title, slug, review_num)正如以上代码中看到的一样:ArticleCreateView和ArticleUpdateView中设置model为Article

两个view都基于Article model自动生成了ModelForm这些ModelForm的验证, 是基于Article model中定义的field转换而来的3. 模式二, 在ModelForm中修改验证

django 怎么在admin里显示数据库的内容操作方法:首先要运行python manage.py createsuperuser 命令来创建一个管理员账户然后在url中输入/admin 即可到达管理员登录页,登录之后会发现并没有数据库中要显示的项目,因为我们还没有注册。

接下来我们注册要在admin中管理的数据模型;在admin.py中注册模型然后刷新页面,即可看到ContactMessage这个数据表了,可以在里边增删进行简单的增删改查djago admin怎么操作数据库中原有的表。

1:这三个按钮都是向下的三角,应该是切换项目的2:在django的项目里链接数据库都是在settings.py文件中配置的 default: { ENGINE: django.db.backends.***,

NAME: orcl, USER: admin, PASSWORD: summer, HOST: 10.1.1.244, PORT: 1521,

},结语:以上就是首席CTO笔记为大家整理的关于django如何将数据库与admin相连的相关内容解答汇总了,希望对您有所帮助!如果解决了您的问题欢迎分享给更多关注此问题的朋友喔~

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:水平扩缩容有什么作用?
下一篇:django框架如何实现与数据库的交互(2023年最新整理)
相关文章