小编Bas*_*nda的帖子

如何从React导航中的深层链接的URI方案中获取参数?

我正在使用 React Navigation 6 设置 URI 方案深度链接,以下是我的配置方式:

const linking = {
  prefixes: ["wagal://"],
  config: {
    ResetPassword: {
      path: "reset/password/:token",
      params: {
        token: null,
      },
    },
  },
};

function homeStack() {

  return (
    <NavigationContainer linking={linking} fallback={<Text>Loading...</Text>}>
      <Stack.Navigator>
        <Stack.Screen component={ResetPassword} name="ResetPassword" />
        //...
      </Stack.Navigator>
    </NavigationContainer>
  );
}
Run Code Online (Sandbox Code Playgroud)

如果我去wagal://reset/password?token=123456789它会将我重定向到重置密码屏幕中的应用程序,但我无法从中获取令牌参数ResetPassword

function ResetPassword({ route }) {
  const {token} = route.params;
  // ...
}
Run Code Online (Sandbox Code Playgroud)

它抛出以下错误:

undefined is not an object (evaluating route.params.token)

但是如果我尝试使用下面的代码在PasswordReset屏幕中获取整个URL,它会显示带有令牌的整个URI:

  useEffect(() => {
    Linking.getInitialURL().then((url) => {
      console.log(`url`, url);
    }); …
Run Code Online (Sandbox Code Playgroud)

url-scheme deep-linking reactjs react-native react-navigation

7
推荐指数
1
解决办法
2万
查看次数

Django 中的 `assertIn` 和 `assertContains` 有什么区别?

我学习了一些Django的测试代码,我觉得assertInassertContains很相似,我读的文档,其中他们没有说任何事情assertIn或者我找不到它。

下面的这个例子检查 'john' 是否出现在 self.email.body

self.assertIn('john', self.email.body)
Run Code Online (Sandbox Code Playgroud)

类似地,此示例检查是否csrfmiddlewaretoken出现在self.response

self.assertContains(self.response, 'csrfmiddlewaretoken')
Run Code Online (Sandbox Code Playgroud)

看起来语法不同,但功能相同。因此,有什么区别?

如果您能通过一些基本示例帮助我理解这一点,我将不胜感激。

非常感谢

python testing django

5
推荐指数
2
解决办法
5504
查看次数

如何统计 Django 网站的访问者数量?

如何计算网站上的访问者数量,以便每次用户访问网站时访问者数量都会增加。我可以使用以下代码计算访问者的浏览次数:

def blog_detail(request, blog_slug):
    blog = get_object_or_404(Blog, slug=blog_slug)
    session_key = 'blog_views_{}'.format(blog.slug)
    if not request.session.get(session_key):
        blog.blog_views += 1  # here
        blog.save()
        request.session[session_key] = True

    context = {
        'blog': blog,
        'categories': get_category_count()
    }

    return render(request, 'blogs/blog-detail.html', context)
Run Code Online (Sandbox Code Playgroud)

blog_views当我的模型中有字段时。我不知道是否有类似的方法来计算我的网站被访问的次数。

有些人建议使用hitcount,但除了通用视图之外我无法在任何地方使用它。如果您也建议,请用一些代码进一步详细说明,谢谢。太感谢了。

python django

5
推荐指数
1
解决办法
1万
查看次数

如何在 Django 模板的结果页面中突出显示搜索到的查询?

我有以下搜索查询views.py

class SearchView(View):
    def get(self, request, *args, **kwargs):
        queryset = BlogPost.objects.all()
        query = request.GET.get('q')
        if query:
            queryset = queryset.filter(
                Q(title__icontains=query) |
                Q(content__icontains=query)
            ).distinct()
        context = {
            'queryset': queryset,
            'query': query,
        }
        return render(request, 'blogs/search_result.html', context)
Run Code Online (Sandbox Code Playgroud)

如果我搜索Tesla结果模板中显示的结果如下所示的单词:

在此处输入图片说明

请帮助我,如何在 Django 模板中以黄色突出显示搜索到的查询?谢谢你的帮助!

编辑:这是带有搜索框的模板代码

<div class="card my-4">
    <div class="card-body">
        <div class="card-title">Search blog</div>
        <form action="{% url 'blog:search_blog' %}">
            {% csrf_token %}
            <input type="text" class="form-control" name="q" placeholder="What are you looking for?">
            <input type="submit" value="Search" class="btn btn-success btn-sm mt-3">
        </form>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是 …

css python django

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

单击 svelte 关闭其他下拉菜单

这是我使用的简单下拉组件。

<script>
    let show = false;
</script>

<div>
    <button on:click={() => show = !show }>Show Dropdown</button>
    {#if show}
        <div>
            <a href="/">Option 1</a>
            <a href="/">Option 2</a>
            <a href="/">Option 3</a>
            <a href="/">Option 4</a>
        </div>
    {/if}
</div>

<style>
    a { display: block; }
</style>

Run Code Online (Sandbox Code Playgroud)

我在父级中使用此组件三次,如下所示:

<script>
    import Dropdown from './dropdown.svelte';
</script>

<div>
    <Dropdown />
    <Dropdown />
    <Dropdown />
</div>
Run Code Online (Sandbox Code Playgroud)

单击第一个下拉列表后,其相应的下拉列表内容将打开,但是单击下一个下拉列表后,如何关闭以前的下拉列表并仅打开单击的下拉列表?

谢谢

javascript svelte sveltekit

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

如何将函数中的年月日和日期传递给创建的相关目录?

我有一个模型:

def author_document_path(instance, filename):
    return f"documents/{ instance.author.username }/%y/%m/%d/{filename}"


def author_blog_images(instance, filename):
    return f"blog-images/{instance.author.username}/%y/%m/%d/{filename}"

class Blog(models.Model):
    title = models.CharField(max_length=255)
    # other fields
    thumbnail = models.ImageField(upload_to=author_blog_images)
    documents = models.FileField(upload_to=author_document_path)
Run Code Online (Sandbox Code Playgroud)

传递f"blog-images/{instance.author.username}/%y/%m/%d/{filename}"上述两个函数的正确方法是什么,因为这些函数不会将Year文件夹创建为2019,month文件夹创建为5,day文件夹创建为30。在上载受尊重的文件和图像之后,目录如下所示:

在此处输入图片说明

这不是我想要的,我希望它看起来像:

在此处输入图片说明

你能帮我吗 非常感谢。

python django

2
推荐指数
1
解决办法
49
查看次数

为什么测试无法检测到test.py的语法错误?并帮助我修复错误

我写了一个如下的测试代码,其中有一些错误,我无法检测到,但是老师说你错过self了代码中的某个地方。那就像是我找不到那个提示。这是我的代码:

def HomeTests(TestCase):
    def setUp(self):
        board = Board.objects.create(
            title='Django', description='Django Desc')
        url = reverse('home')
        response = self.client.get(url)

    def home_test_view_status_code(self):
        self.assertEqual(response.status_code, 200)

    def home_test_func(self):
        view = resolve('/')
        self.assertEqual(view.func, home)

    def test_home_contains_link_to_topics_page(self):
        board_topics_url = reverse(
            'board_topics', kwargs={'id': board.pk})
        self.assertContains(response, 'href={0}'.format(board_topics_url))
Run Code Online (Sandbox Code Playgroud)

即使我运行python manage.py test此代码也不会引发任何错误:

System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s
Run Code Online (Sandbox Code Playgroud)

请帮助我,我在这里做错了。self关键字应该在哪里?为什么?

然后,我去图书馆检查并发现了错误,然后错误地在其中添加了“ p” view = resolvep('/'),却不知道自己在运行python manage.py test它,结果如下:

C:\Users\Administrator\Desktop\Practice\board\src>python manage.py test
Creating test database for alias 'default'... …
Run Code Online (Sandbox Code Playgroud)

python testing django

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

将道具传递给子组件的问题

我有ProductList组件

import Title from "./Title";

class ProductList extends Component {
  constructor(props) {
    super(props);
    this.state = {};
  }
  render() {
    return <Title name="Our" title="Products" />;
  }
}
Run Code Online (Sandbox Code Playgroud)

以及Title导出并在ProductList组件内部使用的组件。

class Title extends Component {
  constructor(title, name) {
    super();
    this.title = title;
    this.name = name;
  }
  render() {
    return (
      <div className="product-title">
        {this.name} <strong>{this.title}</strong>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我不能渲染titlename

此外,一个额外的问题,如果我写的是基于类的组件功能基于组件我们需要做的是这样function Title({ name, title }),为什么我们需要括号{}来包装name,并title在那里?

javascript reactjs

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

React Navigation 5 中嵌套导航的深度链接

如何在 React Navigation 的嵌套导航器中实现深度链接。这里我有一个嵌套的堆栈导航器:

function AuthStack() {
  return (
    <Stack.Navigator>
        <Stack.Screen component={Login} name="Login" />  // deep link this screen
        <Stack.Screen component={ResetPassword} name="ResetPassword" />
    </Stack.Navigator>
  );
}
Run Code Online (Sandbox Code Playgroud)

它嵌套在另一个主堆栈导航器中:

const linking = {
  prefixes: ["wagal://"],
  config: {
    screens: {
      AuthStack: "login",  // this doesn't reference `Login` screen on deep linking
    },
  },
};

function homeStack() {
  return (
    <NavigationContainer linking={linking}>
      <Stack.Navigator>
        <Stack.Screen component={AuthStack} name="AuthStack" />  // here
        // ...
      </Stack.Navigator>
    </NavigationContainer>
  );
}
Run Code Online (Sandbox Code Playgroud)

我尝试深层链接“wagal://login/”来进行Login筛选:

screens: {
  AuthStack: "login",
},
Run Code Online (Sandbox Code Playgroud)

但没有成功,我也尝试过: …

deep-linking react-native react-navigation-v5 react-navigation-v6

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

当配置文件已经创建并保存时,为什么我们必须保存该配置文件的实例?

我正在学习 Django 教程,但在理解下面的代码时遇到一些问题:

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)

# why do we need to save instance? 'Profile.objects.create' already created and save that for us
@receiver(post_save, sender=User)
def save_profile(sender, instance, **kwargs):
    instance.profile.save()
Run Code Online (Sandbox Code Playgroud)

这意味着,如果用户创建帐户或注册网站,则会使用信号自动创建与该用户关联的个人资料。

问题是,为什么我们需要保存配置文件的实例,因为Profile.objects.create(user=instance)已经同时创建保存了该实例。

即使我省略上面代码的第二块,它仍然可以正常工作:

@receiver(post_save, sender=User)
def create_profile(sender, instance, created, **kwargs):
    if created:
        Profile.objects.create(user=instance)
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么,或者我不明白,或者我们不需要第二个块?请帮助我理解这一点并预先感谢您。

python django user-profile

0
推荐指数
1
解决办法
328
查看次数

Django 1.1 与 Django 2.2

我是 Django 的新手,刚做了一个简单的博客网站,现在我想进入更复杂的项目。我最近发现Django 1.11 电子商务网站教程,它看起来很不错,但我担心它的版本。我需要你的建议,我应该在这里使用 Django 1.1 吗?这两个版本有何不同,在遵循这些教程时需要注意哪些主要变化?感谢您的帮助!

python django

0
推荐指数
1
解决办法
4608
查看次数

为什么正则表达式'r [1900-2023] +'不返回1900到2023之间的值范围?

我在Python中有以下代码:

txt = 'Ted\'s date of birth is 5-6-2005 and he started college at 08-5-2019'

year = re.compile(r'[1900-2023]+')

res = year.findall(txt)

for i in res:
    print(i)
Run Code Online (Sandbox Code Playgroud)

上面的代码返回:

200
0
2019
Run Code Online (Sandbox Code Playgroud)

由于[1900-2023]返回的是1900to 范围之间的任何匹配项2023,为什么在这里它返回200和0(超出此范围)?而且,它甚至没有返回处于此范围内的2005。

python regex

-5
推荐指数
1
解决办法
73
查看次数