如何解决Django 使用 url 搜索用户
我在使用 django 时遇到问题。我尝试通过获取一个输入值来搜索用户并将这个值附加到我的 url,这样人们基本上也可以通过在 url 中输入一个名称来搜索(就像 Instagram 一样)。例如:“localhost/name”,它将所有信息提供给用户。尽管该值在 url 中并且我有一个动态 url 功能,但它不起作用。我在这里阅读了很多问题,但没有一个对我有用。提前致谢。
urls.py
path("<str:name>/",views.search,name="search"),
views.py
@login_required(login_url="login")
def search(response,name=None):
if response.method == "POST":
searched = response.POST['searchinput']
users = User.objects.filter(username=name)
return render(response,"main/search.html",{"searched":searched,"user":users})
else:
return redirect("home")
base.html(用于输入)
<form id="searchform" class="form-inline my-2 my-lg-0" name="searchinputform" method="POST" action=" {% url 'search' name=None %}">
{% csrf_token %}
<input class="form-control mr-sm-2" type="search" name="searchinput" id="searchinput" placeholder="Suche" >
<script>
$( "#searchform" ).submit( function( e ) {
e.preventDefault();
document.location = $( "#searchinput" ).val();
} );
</script>
解决方法
我想你想要这样的东西
# urls.py
path("<str:name>/",views.search,name="search")
# views
@login_required(login_url="login")
def search(request,*args,**kwargs):
name = kwargs.get("name")
users = User.objects.filter(username=username)
if users.exists():
return render(request,"main/search.html",{"searched":searched,"users":users})
else:
return redirect("home")
或者如果您想要单个用户
# used username instated of name so it be more clear,# and because names are not unique but usernames are.
path("<str:username>/",**kwargs):
username = kwargs.get("username")
user = User.objects.filter(username=username)
if user.exists():
return render(request,"user":user.first()})
else:
return redirect("home")
,
此代码
users = User.objects.filter(username=name)
不会给你一个用户,而是一个用户列表。如果您只需要一个用户名匹配的用户,请将其更改为
user = User.objects.get(username=name.strip())
或
user = User.objects.filter(username=name).first()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。