运行syncdb并创建su后,它会被记录在哪里?Settings.py似乎没有改变.
在django/contrib/auth/views.py那里有注销视图的定义:
def logout(request, next_page=None,
template_name='registration/logged_out.html',
redirect_field_name=REDIRECT_FIELD_NAME,
current_app=None, extra_context=None):
Run Code Online (Sandbox Code Playgroud)
我想添加extra_context来摆脱我注销时出现的'Logged out'标题
所以我在我的网址中尝试这个:
(r'^accounts/logout/$', logout(extra_context={'title':'something else'}) ),
Run Code Online (Sandbox Code Playgroud)
但后来我得到这个错误:logout()至少需要1个非关键字参数(0给出)我做错了什么?ps:当我这样做的时候
(r'^accounts/logout/$', logout ),
Run Code Online (Sandbox Code Playgroud)
它有效,但后来我得到了"退出"文字......
谢谢,弗雷德
我正在使用django auth模块开发一个Django应用程序,并希望使用相同的用户名和密码防止多次登录.
它应该使用相同的用户名和密码防止在不同计算机上进行多次登录.我如何在Django中实现这一目标?
我们必须牢记以下事项:
我正在使用django-guardian来管理每个对象的权限.
对于给定的用户,我授予对一个对象的所有权限:
joe = User.objects.get(username="joe")
mytask = Task.objects.get(pk=1)
assign('add_task', joe, mytask)
assign('change_task', joe, mytask)
assign('delete_task', joe, mytask)
Run Code Online (Sandbox Code Playgroud)
我按预期得到了:
In [57]: joe.has_perm("add_task", mytask)
Out[57]: True
In [58]: joe.has_perm("change_task", mytask)
Out[58]: True
In [59]: joe.has_perm("delete_task", mytask)
Out[59]: True
Run Code Online (Sandbox Code Playgroud)
在admin.py中我也使TaskAdmin继承GuardedModelAdmin而不是admin.ModelAdmin
现在当我用joe连接到我的网站时,我得到了管理员:
You don't have permission to edit anything
Run Code Online (Sandbox Code Playgroud)
我不应该能够编辑对象mytask吗?
我是否必须使用内置的基于模型的权限系统设置一些权限?
我错过了什么吗?
编辑
我试图添加选项user_can_access_owned_objects_only,这应该是我的问题,但我仍然看不到我的管理员...
class TaskAdmin(GuardedModelAdmin):
user_can_access_owned_objects_only = True
pass
admin.site.register(Task, TaskAdmin)
Run Code Online (Sandbox Code Playgroud)
谢谢
django permissions django-admin django-authentication django-guardian
我在我的应用程序中使用内置登录.有一些自定义后端或程序包来处理这个问题.但其中许多并不是我所期待的.
我在注册时通过django-registration制作了独特的电子邮件.现在我想要的只是在登录页面而不是用户名中询问电子邮件.
但如果我使用django电子邮件等自定义后端作为用户名,则在使用django-registration时会崩溃.
我不想更改所有身份验证后端,我只想更改登录页面.
在网站的其余部分,我将使用用户名.我在写自定义管理页面时pe:
welcome {{user}}
Run Code Online (Sandbox Code Playgroud)
它必须呈现用户名.不是电子邮件.
我需要找到出路.我卡住了.
谢谢.
django django-authentication django-registration django-login
我是Django的新手,我已经安装了django-allauth.
我按照文档进行操作,但是我坚持使用安装后的步骤:
为您的域添加网站,匹配settings.SITE_ID(django.contrib.sites app).
对于每个基于OAuth的提供商,请添加社交应用(socialaccount应用).
填写从提供商处获得的站点和OAuth应用凭据.
我根本不明白这一部分.
我试图注册该网站&socialaccount但没有任何变化.另外,我看到我必须定义站点ID,所以我把它放在我的设置中:
SITE_ID = '1'
Run Code Online (Sandbox Code Playgroud)
拜托,有人可以帮帮我吗?任何帮助将不胜感激.
UPDATE
我找到了一个教程,让我继续这个.我在Facebook注册了一个应用程序,我获得了一个APP ID和秘密,我建立了/ admin/socialaccount/socialapp /但即使一切准备就绪我得到了
Page not found (404)
Request Method: GET
Request URL: MyIP/accounts/profile/
Using the URLconf defined in gameproject.urls, Django tried these URL patterns, in this order:
^admin/
^accounts/ ^ ^signup/$ [name='account_signup']
^accounts/ ^ ^login/$ [name='account_login']
^accounts/ ^ ^logout/$ [name='account_logout']
^accounts/ ^ ^password/change/$ [name='account_change_password']
^accounts/ ^ ^password/set/$ [name='account_set_password']
^accounts/ ^ ^inactive/$ [name='account_inactive']
^accounts/ ^ ^email/$ [name='account_email']
^accounts/ ^ ^confirm-email/$ [name='account_email_verification_sent']
^accounts/ ^ ^confirm-email/(?P<key>\w+)/$ [name='account_confirm_email']
^accounts/ ^ …Run Code Online (Sandbox Code Playgroud) 我想提供一个Django应用程序,它通过单个数据库但不同的用户集为多个网站提供服务.像博客应用程序一样思考,它将由具有不同主题的多个域使用,但通过向模型添加站点字段来使用相同的数据库.
我使用Django的SitesFramework来完成这项工作.但问题是,我无法将不同网站的用户模型分开.我想将相同的用户模型与每个站点唯一的站点字段和电子邮件字段一起使用.
我试图AbstractUser像这样扩展模型:
from django.contrib.auth.models import AbstractUser
from django.contrib.sites.models import Site
from django.contrib.sites.managers import CurrentSiteManager
class Member(AbstractUser):
username = None
site = models.ForeignKey(Site)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
on_site = CurrentSiteManager()
class Meta:
unique_together = ('site', 'email')
Run Code Online (Sandbox Code Playgroud)
但是给出了这个错误: 'Member.email' must be unique because it is named as the 'USERNAME_FIELD'.
这个问题的最佳做法是什么?
python django django-models django-authentication django-sites
我User在 Django 中从头开始实现了我自己的类。但是当我登录时出现此错误:
以下字段在此模型中不存在或为 m2m 字段:
last_login
我真的不想要这个领域last_login。
我做了一些研究,问题就在这里: contrib.aut.models.py
def update_last_login(sender, user, **kwargs):
"""
A signal receiver which updates the last_login date for
the user logging in.
"""
user.last_login = timezone.now()
user.save(update_fields=['last_login'])
user_logged_in.connect(update_last_login)
Run Code Online (Sandbox Code Playgroud)
我找到了一个解决方法,但这不是一个优雅的解决方案。我user_logged_in.disconnect(update_last_login)在我的models.py文件中添加了我的User类的定义。
有没有更好的解决方案?
我想知道在 Django 中创建帐户应用程序是否是一个好习惯。
假设您有一个名为 Django 的项目mysite并在两个应用程序中创建:core,其中包含一些业务逻辑,以及accounts.
mysite/accounts/urls.py
urlpatterns = [
url('^', include('django.contrib.auth.urls')),
]
Run Code Online (Sandbox Code Playgroud)
我的网站/我的网站/urls.py
urlpatterns = [
url(r'^accounts/', include('accounts.urls')),
url(r'^core/', include('core.urls')),
]
Run Code Online (Sandbox Code Playgroud)
mysite/accounts/templates/registration/login.html
{% extends "base.html" %}
{% block content %}
{# Content of login page #}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
mysite/core/templates/base.html
<!DOCTYPE html>
<html>
<body>
{% block content %}{% endblock %}
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我为django.contrib.auth.urls.
当然我们不要忘记插上这两个应用程序:
我的网站/我的网站/settings.py
INSTALLED_APPS = [
'accounts.apps.AccountsConfig',
'core.apps.CoreConfig',
# ...
]
Run Code Online (Sandbox Code Playgroud)
所有这些都是好的做法还是我应该在core应用程序中集成整个帐户和身份验证管理?
我正在使用Django 2.0和Django RESET Framework编写REST API我的应用程序。
我配置了以下身份验证方法
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.TokenAuthentication',
'rest_framework.authentication.BasicAuthentication',
'rest_framework.authentication.SessionAuthentication',
),
}
Run Code Online (Sandbox Code Playgroud)
截至目前,它允许所有经过身份验证的用户访问web api视图。
我想要的是允许少数用户(可能是超级管理员用户)能够通过登录从会话身份验证或 Web 浏览器访问 API。
编辑 2:contacts/views.py
class ContactViewSet(viewsets.ModelViewSet):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
permission_classes = (IsAuthenticated,)
def perform_create(self, serializer):
serializer.save(user_id=self.request.user)
Run Code Online (Sandbox Code Playgroud) django ×10
python ×3
django-admin ×1
django-login ×1
django-sites ×1
django-views ×1
logout ×1
permissions ×1