python--django小白,有个关于多用户提交和数据根据用户过滤的问题

python--django小白,有个关于多用户提交和数据根据用户过滤的问题,第1张

在你的数据表模型中新增一个字段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 怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9651298.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存