
在你的数据表模型中新增一个字段user作为外键指向用户表的id,表示该数据是由哪个用户创建的:
class Data(modelsModel):
# 其他数据字段
user = modelsForeignKey('User', on_delete=modelsCASCADE)
2 处理请求时,通过requestuser获得登录用户,返回该用户提交的所有数据:
def view_func(request):
user = requestuser
if useris_anonymous:
return >
queryset = Dataobjectsfilter(user=user)
return render(request, 模板, {'queryset': queryset})
如果你忘记了设置Django的Admin密码,那么你可以使用 createsuperuser 来甚至密码,但是如果你忘记了Admin的密码的话,那么就要用Django shell: python managepy shell 然后获取你的用户名,并且重设密码: from djangocontribauthmodels import User user =Userobjectsget(username='admin') userset_password('new_password') 这样之后你就可以使用新的密码登入了。
D
SlugField字段是将输入的内容中的空格都替换成‘-’之后保存
Django官方文档中关于SlugField的描述如下:
class SlugField([max_length=50, options])
Slug 是一个新闻术语,通常是某些东西的短标签。一个slug只能包含字母、数字、下划线或者是连字符,通常用来作为短标签。通常它们是用来放在URL里的。
像CharField一样,你可以指定max_length(也请参阅该部分中的有关数据库可移植性的说明和max_length)。如果没有指定 max_length, Django将会默认长度为50。
SlugField字段的Fielddb_index自动设置为True。
通常根据另一个值自动生成slug来填充到SlugField的值。你可以在admin中使用prepopulated_fields自动执行此 *** 作。
可以重写save(),用slugfy方法转化数据后自动填充到SlugField中。简单示范如下
class test(modelsModel):q = modelsCharField(max_length=30)
s = modelsSlugField()
def save(self, args, kwargs):
selfs = slugify(selfq)
super(test, self)save(args, kwargs)
一般多应用于URL正则表达式中的named group,作为参数在视图和URL之间传递
class User(modelsModel):
username = modelsCharField(max_length=50,blank=False)
password = modelsCharField(max_length=50,blank=False)
class UserInfo(modelsModel):
user= modelsForeignKey(User)
address = modelsCharField(max_length=50,blank=False)
email = modelsCharField(max_length=50,blank=False)
直接通过外键ForeignKey关联
您可以通过组用户中的$ c>属性。
from djangocontribauth models import User,Group
group = Group(name =“Editor”)
groupsave()#为此示例保存此新组
user = Userobjects get(pk = 1)#假设有一个初始用户
usergroupsadd(group)#user现在在“编辑器”组
然后 usergroupsall()返回 [<组:编辑器> ;]
这个不能再settingspy里面直接配置,配置了以后这个配置文件写的就是默认Auth系统了,想要用到各自的用户表来认证话,你在每个App的modelspy和adminpy里面分别继承Django自带的Auth系统,from djangocontribauth import authenticate, login, logout这句话就可以解决views里面的登录与退出;from djangocontribauthmodels import User就可以继承User的models。
觉得好的话采纳一下哦
如果你使用 Django 的模型表单 (model form) 生成表单,可以使用 Django 查询数据库进行筛选,以便仅显示与特定用户相关的分类。
首先,在视图函数中,查询数据库并返回与特定用户相关的分类:
from djangoshortcuts import render
from models import Category
def my_view(request):
user_categories = Categoryobjectsfilter(user=requestuser)
return render(request, 'my_templatehtml', {'categories': user_categories})
然后,在模板中,您可以在生成表单时使用该分类集:
<form method="post">
{% csrf_token %}
{{ formas_p }}
<input type="submit" value="Submit">
</form>
最后,在表单类中,您可以重写初始化方法,以仅使用用户分类:
from django import forms
from models import Table2
class Table2Form(formsModelForm):
class Meta:
model = Table2
fields = ('category',)
def __init__(self, user, args, kwargs):
super()__init__(args, kwargs)
selffields['category']queryset = Categoryobjectsfilter(user=user)
最后,在视图函数中实例化表单,并将用户传递给表单类:
from djangoshortcuts import render
from forms import Table2Form
def my_view(request):
user_categories = Categoryobjectsfilter(user=requestuser)
form = Table2Form(requestuser, instance=table2_instance)
return render(request, 'my_templatehtml', {'form': form})
在网上看到都是使用Django的models和makemigration,migrate命令来创建新表,并使用。可是我的数据已经存在了已经创建好,并且已经存储有数据了,不能再重新创建新表了。了解Django的表明和models名称的映射关系就可以让Django使用已经存在的表。
假如在Django存在models如下:
[python] view plain copy
from djangodb import models
# Create your models here
class Sciencenews(modelsModel):
id = modelsCharField(max_length=36,primary_key=True)
first_module = modelsCharField(max_length=30,default="News")
second_module = modelsCharField(max_length=30,default="Latest News")
title = modelsCharField(max_length=300)
author = modelsCharField(max_length=60,null=True)
publish_date = modelsCharField(max_length=35,null=True)
content = modelsTextField(null=True)
crawl_date = modelsCharField(max_length=35,null=True)
from_url = modelsCharField(max_length=350,null=True)
执行数据迁移命令:[python] view plain copy
python managepy makemigration
python managepy migrate
会在数据库中生成名称为show_sciencenews的数据表。show为应用名称,此处我的应用名称为show。可以看到Django创建表的命名规则:应用名_模型名。我的存储爬取到的数据的表格名称原来为science_news,想要Django使用它,而不是创建新的表,只需要把的它的名称改为:应用名_要与该表映射的models名称,在此处我改为show_sciencenews。然后使用如上的数据迁移命令,这时可能会提示数据表已经存在的错误,不用理会,models已经和数据表映射上了。接下来只需要正常使用models和数据表就可以了。
以上就是关于python--django小白,有个关于多用户提交和数据根据用户过滤的问题全部的内容,包括:python--django小白,有个关于多用户提交和数据根据用户过滤的问题、django 怎么建立sqlite3的用户名和密码、django models.SlugField 怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)