小编Sel*_*cuk的帖子

错误:找不到“登录”。“登录”不是有效的视图函数或模式名称

这是我第一次使用 Django 登录模板,但遇到了问题。它一直说 login 不是一个有效的视图函数,但我在我的用户应用程序的 urls.py 中定义了它:

在此处输入图片说明

在此处输入图片说明

不知道我做错了什么。

主要网址.py

urlpatterns = [
    path('', include('blogging_logs.urls', namespace='blogging_logs')),
    path('users/', include('users.urls', namespace='users')),
    path('admin/', admin.site.urls),
]
Run Code Online (Sandbox Code Playgroud)

应用程序: blogging_logs:base.html

<p>
  <a href="{% url 'blogging_logs:index' %}">Home</a>
  <a href="{% url 'blogging_logs:categories' %}">Categories</a>
  {% if user.is_authenticated %}
    Hello, {{ user.username }}.
    {% else %}
      <a href="{% url 'users:login' %}"> login in</a>
  {% endif %}
</p>

{% block content %}{% endblock content %}
Run Code Online (Sandbox Code Playgroud)

应用程序:用户:urls.py

from django.contrib import admin
from django.urls import re_path, path
from django.contrib.auth import authenticate, login
from django.contrib.auth …
Run Code Online (Sandbox Code Playgroud)

python django url

4
推荐指数
1
解决办法
5330
查看次数

无法使用 pip 安装软件包(SSL:CERTIFICATE_VERIFY_FAILED)

我一直无法下载任何软件包,pip并且我不断收到有关确认 SSL 证书问题的相同错误。我目前在我大学的网络上,我的笔记本电脑上也安装了 Anaconda。我不确定这两个因素是否与这个问题有关。

我正在使用pythonversion 3.7.0pipversion9.0.1pip3version 10.0.1

当我pip install django在终端中输入时,我得到以下结果:

Collecting django
  Could not fetch URL https://pypi.python.org/simple/django/:
     There was a problem confirming the ssl certificate: 
     [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749)
     - skipping
  Could not find a version that satisfies the requirement django (from versions: )
No matching distribution found for django
Run Code Online (Sandbox Code Playgroud)

我已经阅读了其他几个主题。我试过这样的命令没有成功:

curl https://bootstrap.pypa.io/get-pip.py | python3
pip install --upgrade pip
pip install --trusted-host pypi.org --trusted-host …
Run Code Online (Sandbox Code Playgroud)

python django pip python-3.x

4
推荐指数
1
解决办法
8831
查看次数

通过键合并两个 Python 字典的值

我想通过它们的键合并两个字典的值。例子:

d1 = {'a':1, 'b':2, 'c':3}
d2 = {'a':2, 'b':[2,3], 'd':3}
Run Code Online (Sandbox Code Playgroud)

所需的输出:

{'a': [1, 2], 'b': [2, 2, 3], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所拥有的是

d12 = {}
for d in (d1, d2):
    for k,v in d.items(): 
        d12.setdefault(k, []).append(v)
Run Code Online (Sandbox Code Playgroud)

产生

d12 = {'a': [1, 2], 'b': [2, [2, 3]], 'c': [3], 'd': [3]}
Run Code Online (Sandbox Code Playgroud)

不想要的输出。

我在 SO 上搜索了一下,发现这篇文章回答了我的问题,前提是它没有吐TypeError: can only concatenate tuple (not "int") to tuple.

python dictionary python-3.x

4
推荐指数
1
解决办法
70
查看次数

Python:函数的默认值作为函数参数

假设我有这样的功能:

def myF(a, b):
    return a*b-2*b
Run Code Online (Sandbox Code Playgroud)

假设我希望 的默认b值为a-1

如果我写:

def myF(a, b=a-1):
    return a*b-2*b
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

NameError: name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)

我可以使用下面的代码:

def myF(a, b):
    return a*b-2*b

def myDefaultF(a):
    return myF(a, a-1)
Run Code Online (Sandbox Code Playgroud)

具有myF默认值,但我不喜欢它。

如何避免myDefaultF并使用myF默认值a-1而不出现b错误?

python arguments default function user-defined-functions

4
推荐指数
1
解决办法
1500
查看次数

Django Registration Redux:如何将唯一标识符从用户名更改为电子邮件,并使用电子邮件作为登录名

django-registration-redux在我的项目中用于用户注册.它使用默认User模型username作为唯一标识符.

现在我们想要丢弃usernameemail用作唯一标识符.

而且我们也希望使用email而不是username登录.

怎么做到这一点?

是否可以在不更改AUTH_USER_MODEL设置的情况下执行此操作?

因为它来自官方文件

如果要设置AUTH_USER_MODEL,则应在创建任何迁移或manage.py首次运行迁移之前进行设置.

python django django-registration

3
推荐指数
1
解决办法
2619
查看次数

使用关键字参数 '{'pk': ''}' 反转 'plan_edit'。尝试了 1 个模式:['palan/edit$']

我收到以下错误:

使用关键字参数 '{'pk': ''}' 反转 'plan_edit'。尝试了 1 个模式:['palan/edit$']`。

有谁知道如何解决它?

网址.py

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^palan/(?P<pk>[0-9]+)/$', views.palan_detail, name='palan_detail'),
    url(r'^palan/new/$', views.plani_new, name='plani_new'),
    url(r'^nn1/new/$', views.plani_new1, name='plani_new1'),
    url(r'^palan/edit$', views.edit, name='plan_edit'),
]
Run Code Online (Sandbox Code Playgroud)

视图.py

def edit(request, pk):
    post = get_object_or_404(Planning, pk=pk)
    if request.method == "POST":
        form = PostFormP(request.POST, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect('palan_detail', pk=post.pk)
    else:
        return render(request, 'pages/plan_edit.html')

def palan_detail(request, pk):
    palan = get_object_or_404(Planning, pk=pk) 
    j = Jour.objects.all().count() 
    return render(request, 'pages/palan_detail.html', {'palan': palan, 'j':j},) …
Run Code Online (Sandbox Code Playgroud)

python django django-urls

3
推荐指数
1
解决办法
7661
查看次数

如何有效地删除Python中的单个字母单词

我想删除单个字母词,如a,i e,e g,b f f,y o l o,c y l使用Python函数.

我目前的代码如下.

def remove_single_letters(concept):
    mystring = "valid"

    if len(concept) == 1:
        mystring = "invalid"

    if len(concept)>1:
        validation = []
        splits = concept.split()
        for item in splits:
            if len(item) > 1:
                validation.append("valid")
        if len(validation) != 1:
            mystring = "invalid"
    return mystring

print(remove_single_letters("b f f"))
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,我想知道在python中是否有更有效的方式(用更少的时间).

python

3
推荐指数
1
解决办法
262
查看次数

Python枚举删除列表的最后一个元素

我在这里试图解析一些命令行参数,但是我构建的脚本不断删除最后一个参数.

为了保持简单,我重现了这样的问题:

import getopt

argv = ["-c", "config", "-o", "hello", "-e", "fu bar", "-q", "this is a query"]
opts, args = getopt.getopt(argv, "c:o:e:q", ["cfile=", "ofile=", "entry=", "query="])

for opt, arg in opts:
    print(opt, arg)
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

-c config
-o hello
-e fu bar
-q
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

python python-3.x

3
推荐指数
1
解决办法
61
查看次数

if 和 else 在单行 python 循环中

抱歉,如果这么简单的话;当我在其他地方搜索时,但没有人指出这个具体问题。我想以一种使我的代码紧凑的方式学习Python!因此,为此,我尝试使用单行(即短)循环而不是多行循环,特别是 for 循环。当我尝试在单行循环内使用单行 if 和 else 时,问题就出现了。它似乎不起作用。例如,考虑以下情况:

numbers = ... # an arbitrary array of integer numbers

over_30 = [number if number > 30 for number in numbers]
Run Code Online (Sandbox Code Playgroud)

这是有问题的,因为one-line if确实需要else遵循它。尽管如此,当我添加else到上面的脚本(在if):之后over_30 = [number if number > 30 else continue for number in numbers],它变成了另一个 pythonic 错误。

我知道问题实际上出在单行 if 和 else 上,因为 python 需要识别一个应该分配给左侧运算符的值。但是,对于上述模式的特定用例是否有解决方法?

python for-loop if-statement list-comprehension

3
推荐指数
1
解决办法
9843
查看次数

Python 中的自定义排序顺序

我可以定义自己的排序顺序并仍然使用 Python 排序函数吗?例如,假设我想要的排序顺序是:

list1 = ['Stella', 'Bob', 'Joe', 'Betty']
Run Code Online (Sandbox Code Playgroud)

我希望做类似的事情:

list2 = ['Joe', 'Stella']
sorted(list2, key=list1)
Run Code Online (Sandbox Code Playgroud)

并得到:

['Stella', 'Joe']
Run Code Online (Sandbox Code Playgroud)

其中排序顺序保留在 中的自定义顺序内list1。我可以通过交换数值来分多个步骤来完成此操作,但我认为可能有一种方法可以与上面类似。

python sorting python-3.x

3
推荐指数
1
解决办法
1487
查看次数