这是我第一次使用 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) 我一直无法下载任何软件包,pip并且我不断收到有关确认 SSL 证书问题的相同错误。我目前在我大学的网络上,我的笔记本电脑上也安装了 Anaconda。我不确定这两个因素是否与这个问题有关。
我正在使用pythonversion 3.7.0、pipversion9.0.1和pip3version 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) 我想通过它们的键合并两个字典的值。例子:
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.
假设我有这样的功能:
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错误?
我django-registration-redux在我的项目中用于用户注册.它使用默认User模型username作为唯一标识符.
现在我们想要丢弃username并email用作唯一标识符.
而且我们也希望使用email而不是username登录.
怎么做到这一点?
是否可以在不更改AUTH_USER_MODEL设置的情况下执行此操作?
因为它来自官方文件
如果要设置
AUTH_USER_MODEL,则应在创建任何迁移或manage.py首次运行迁移之前进行设置.
我收到以下错误:
使用关键字参数 '{'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) 我想删除单个字母词,如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中是否有更有效的方式(用更少的时间).
我在这里试图解析一些命令行参数,但是我构建的脚本不断删除最后一个参数.
为了保持简单,我重现了这样的问题:
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!因此,为此,我尝试使用单行(即短)循环而不是多行循环,特别是 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 排序函数吗?例如,假设我想要的排序顺序是:
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 ×10
django ×4
python-3.x ×4
arguments ×1
default ×1
dictionary ×1
django-urls ×1
for-loop ×1
function ×1
if-statement ×1
pip ×1
sorting ×1
url ×1